GitHubID LaurenceLiZhixin is a student majoring in software Engineering at Sun Yat-sen University. He is good at using Java/Go language and focuses on cloud native technology and microservices.

On March 19, hangzhou was still cloudy and rainy in the early spring. Through the floorto ceiling Windows of the EFC gym, buildings, mountains, neat streets and sparse vehicles loom in the mist.

In the afternoon nap time, I took a bottle of coffee and went back to my work station to see that the PR I just submitted passed the CI check. This might be my last day as an intern in my life.

The process of growth is a process of continuous experience and experience, the beginning and end of a period of different mood. I hope that three months later, the young man who has passed his 22nd birthday will get his diploma and appear here again. I think he must be more familiar with Java at that time.

Undergraduate course time

A regular college career is about four years of undergraduate and three years of master’s, while my time on campus is only two and a half years. It has been a whole year since I practiced abroad. I am very glad to have such experience from Beijing to Shenzhen and then to Hangzhou.

Three periods of internship in different directions. From the beginning of GoOnline ONLINE IDE project in school, I was full of yearning for real development projects. The operation and maintenance development of “Mutual Enjoy” platform enabled me to have an understanding of the daily development and operation and maintenance process of the enterprise. To watch the business development and demand launch, I am full of passion for projects and technologies with millions of users; Then to the middleware research and development, focus on cloud native field exploration and landing.

My first internship was in Tucson Technology In Beijing, during which I was full of confusion and perplexity. I was confused about whether to choose research and development or scientific research. I was ignorant and timid about all kinds of fancy tools I had never seen, but FORTUNATELY I finally got used to my choice.

The second internship was at Tencent in Shenzhen. The whole process was full of excitement and a sense of crisis. The crisis came from how to stand up socially and technically. I am very grateful that I can calmly deal with all kinds of emergencies. The pressure from employment and the pressure from becoming a full-time employee is not enough to crush a young man with dreams. I still miss My mentor Steven [see link 1].

Last fall, I started my third internship experience in the middleware team of Ali Group. Compared with the previous two internships, this internship was much more comfortable. When you see the way ahead clearly, you can still live well. What you need to do is to accumulate, precipitate and enjoy the happiness from research and development. Fortunately, the mentors, colleagues and leaders I met during my internship were all very nice. I could meet the seniors who talked, talked, ate and drank with me, which might be a beacon of light pointing to the future for the young people who just entered the society.

Dubbogo community

After receiving the internship offer from Ali, I was introduced into dubbogo community by the big Boss before I entered xichang factory. I was told that the task of the internship was to promote the internal landing of Dubbogo and the development of DubboGo 3.0. This is a technical organization, but also a human place.

Back in October last year, when I just got the offer, DUbbo-Go Clone was sent to the local for the first time and RPC call was successfully implemented. I was very excited. Because the scene is unfamiliar with the familiar. First bug fix, first contribute feature, write source code read, then become dubbo committer, commit to Dubbo-go 3.0 contribution. The happiness that belongs to young IT engineers is to let themselves and the project grow together.

During my internship at Alibaba, dubbo-Go 3.0, the big release of 2021, crossed the entire timeline. When I was still in Shijiazhuang, I began to wash my feet in a massage shop while holding weekly meetings. Later, I got to know leaders and technology leaders in the community. Many times, I was touched by the technology and spirit of the elders.

At the end of March, I also hope that Dubbo-Go 3.0 can be my final answer paper during the internship. However, version 3.0 is definitely not the end, but the development process of the domestic open source RPC framework. With the innovation at every stage, a rich history of cloud native development has been achieved in the long river of the future.

I love the technical atmosphere more than the project itself:

  • A lot of technical people can gather together, each of their strengths for a goal and work hard;
  • A sense of responsibility for “having me on the project”;
  • A rigor in open source projects implemented in coding;
  • A party can be happy to blow water and communication tacit understanding.

On Saturday night, The dubbogo community in charge of dubbo-Go-Pixiu project, Eldest brother Tiecheng, in order to celebrate the success of his transfer from The Company outside Ali to Hema, called the community hangzhou netizens to a successful party. From the technology gossip to community secret, nothing to talk about, and have a “crackdown” in the picture of a certain IoT company from hangzhou to go to ant boss ^_^.

I am very grateful to many excellent and sentimental predecessors I met on my way forward!

Triple-go

Internship, of course, is not only a weekend of romantic months, more is the period of work experience and growth. During the internship, I was mainly responsible for the implementation of Dubbo-Go 3.0 Triple protocol and new routing rules.

As an important feature of Dubbo-Go 3.0, open source Triple protocol is simply to extend gRPC protocol and introduce duBBo’s service governance capability and expansion space on the basis of gRPC.

At first think very simple, in HTTP2 on the implementation of Triple, and compatible with gRPC. The challenge, however, is to be fully compatible with gRPC in general/streaming/status codes, while also having dubbo service governance capabilities that extend dubbo-Go’s existing base and extend with elegance.

  • Hand HTTP2

    Only using the data frame layer of the SDK tore HTTP2 protocol, first need to solve the correctness of the packet sending logic. For a week or two. Implementation of the call through.

    But there are always problems with self-realization…

    In addition to sending data frames correctly, a series of streaming scenarios such as sliding window flow control, up and down line, data frame unpacking and closing should be considered. My solution is very straightforward, capture the package to see how GRPC do (no time to look at the source code), and then follow its logic to achieve.

    When a problem is solved in the process of hair loss, it looks like a good thing, but it is actually a dead end – the hand tear really can’t match the official library, whether it is stability or speed.

  • To change the official library

    The official library was not chosen at first, because gRPC does not do that. In the process of research, I found it difficult to customize Header and Trailer. The official Go library only gave me a few interfaces, so how to customize Header and Trailer? How do I stream calls? After submitting an issue to the official library, I was replied: “Good idea, make a contribution by yourself”…

    At this point, the next-door Java implementation is much more comfortable, with the powerful Java-Http2 library coming straight from the table. Later, I was a little afraid of my contribution to large projects. There were too many rules and regulations, so I learned to be smart with my elder brothers and simply fork a branch to change. I felt that I could change, but I could realize the needs.

    Thank you very much for the experienced leaders reminding me that the official library can be tried.

  • Smooth experience

    Spent two days to change the bottom network library, experience a lot of smooth, especially a few megabytes of large data packets, with the community predecessors tested, finally 2-3MIB bidirectional data packets can reach 1.5K QPS.

    Of course, there are a lot of issues that haven’t been taken into account, but it’s great to soak in the joy and accomplishment of development.

Cloud native of the future

Although the internship only lasted for three months, I found more and more that middleware research and development had taken too much pleasure from me, and I found more and more love for programming, awe for the profession, and faith in cloud native technology.

I think any IT engineer, regardless of technical depth, regardless of experience, should have their own technical beliefs. I hope that my belief in technology begins with my love for programming and a strong sense of project achievement, and grows from the communication with predecessors and the learning of source code. I hope that it will be implemented in the two words of “landing” and “innovation” in the future.

I think, any technology, if not ground production, will not have much meaning. However, it is a great process to break through the barriers and barriers of the “metaphysical” architecture concept, such as the contradiction with the existing service/language/design concept, and continuously promote the implementation. All the people who have made efforts in this process are the tide surfers standing on the top of the wave.

What is the future of middleware? What does a Sidecar architecture really look like when it lands gracefully? What is the future relationship between Java and Go? What can RPC be replaced by, or in a new form?

Many things are as uncertain as the stock market at the beginning of the year, but there must be a single answer. What changes will I experience in technology in Hangzhou in the future, and what breakthroughs and progress will be made in the technology stack in the industry?

It’s hard to imagine what my tech stack will look like three years from now. After all, from testing, operations, business development, to infrastructure, the only constant is change.

The last word

With the last day of the internship before leaving the West factory memorial photo, to commemorate the end of a life journey. May the open source Dubbo/Dubbogo/DAPR become more and more powerful in the future, and more and more developers can use them to create greater value in the cloud native.

Dubbo 3.0 will be released soon, so stay tuned! If you are interested, please visit me at dubbogo Community Nail Group on 3133 3295.

This is a tribute to all the mentors and technical seniors who helped me grow during my three internships, and in honor of my dying college years!

A link to the

  • I read in tencent’s mentor Steven blog.csdn.net/forevermoon…
  • 2 dubbo – go github.com/apache/dubb…
  • 3 Triple – go github.com/dubbogo/tri…
  • 4 Dubbo – go (a) the Server end open source notes developer.aliyun.com/article/777 service process…
  • 5 Dubbo – go source notes (2) the client calls mp.weixin.qq.com/s/eb2aHvILe…