Everybody is good! I’m Kevin Go-Zero. Full of frightened 2020 is about to pass, see the nuggets on the technical people annual essay, can not help but write down the hardships and full of harvest of 2020 ✍️

The outbreak began

The outbreak suddenly escalated during the Spring Festival holiday, and we are facing the transformation and upgrading of our platform. As a CTO, there are two priorities:

  • To ensure the stability of the platform for large-scale use
  • Ensure fast delivery of new business required for transformation

Team pressure is huge at the same time also felt the unprecedented enthusiasm for combat, troops for a thousand days, do not experience the baptism of war and fire, how to know whether the technical ability of the team can withstand the test of flood peak.

When the battle began, the business team was quickly assigned to carry out the development of urgently needed functions, and the architecture team was arranged to investigate, drill and solve technical problems.

For about two months, we spent almost three meals a day at the computer desk, went to sleep when we got sleepy, woke up to write code (and of course had meetings when necessary), and it was a very special experience in life…

Began to hit the pit

With the required features quickly online, we immediately began a large-scale pressure test, the crater is as follows:

  • A large number of requests fail, but the pressure on the server is normal. After a check, it is found that the requests entering the internal network are forwarded by Nginx and then sent to the external network, and we start the Web Access Firewall (WAF) on the external network. WAF will think that all users are from those IP addresses on the internal network. This is “obviously” an attack, so a large number of requests are dropped, so we specify a rule that requests coming into the Intranet are not allowed to be forwarded to the Internet.
  • In order to quickly implement the functionality, some students used NodeJS to implement part of the functionality, and deployed to the K8S cluster, nodeJS pod can not support the traffic immediately, coupled with uncontrollable memory leaks, we quickly decided to no longer use NodeJS as the backend, using NodeJS was “accidental”.
  • A cloud vendor uses LSM Tree to implement oss storage. When small files suddenly increase, they cannot be split in time, resulting in two OSS access failures when we have a large number of visits. We later applied for a few more buckets ourselves to disperse file storage requests from the code layer.

Practical effect

After a month of development, pressure test and pre-school exercise, our system basically meets the requirements of the school, and then it is to accept the actual combat test.

On the first day of school, the first problem we encountered was that some service providers could not bear the traffic pressure. Although we had planned and communicated fully before, we still failed to anticipate the ferocity of the peak flow, so the service provider urgently increased resources to solve the problem.

The ElasticSearch cluster of the message classification service was under a lot of pressure. As a result, the call code of the ElasticSearch cluster was not added to the fuse protection, which caused the cluster to collapse.

After the intensive burst of traffic in the first week, we were generally stable. For this also got a letter of thanks from the relevant departments, compared with friends, our service stability is quite good. Follow-up service stability on the basic can be used to describe the placid. At this point, go-Zero (though not yet called Go-Zero) is fully battle-tested 💪

To the open source

In July, I was fully affirmed in the communication with the technical channel teacher of the group. The open source channel of the group promoted and helped me open source the underlying micro-service support framework.

On the night of July 7, I submitted the github code for the first time. At this time, there was only one page of readme that I wrote temporarily in the document. Why did I choose open source with only one page of readme? I think all things are difficult at the beginning, and if you decide to write all the documentation before you open source it may be put on hold, so let the ball roll first!

Once open source, the community immediately gave us enthusiastic feedback and pushed us to complete the document quickly. We supplemented the extensive usage documentation over the weekend with fairly complete examples of Shorturl and Bookstore. From these two examples, most developers get a sense of go-Zero’s convenience and engineering efficiency. Thank you for giving us many suggestions for improving the example.

On August 16, the go Night reading sharing system told the story and design thinking behind Go-Zero, which was recognized by many viewers. I still get a lot of positive feedback about this video. Thank you for your recognition!

On August 24, GoCN reported that the GopherChina community got to know go-Zero on a large scale for the first time. A large number of Gopher members joined the community and the number of wechat groups grew rapidly.

Since September, Go-Zero has repeatedly appeared at the top of github Go Daily list, as shown below:

List of day On the list

At the same time, many companies have used Go-Zero for production, and they have been running smoothly since it was launched, and some of them have more than one million daily lives.

In October, it won gITee’s Most Valuable Project (GVP), followed by the Open Source China’s Most Popular Project of the Year award.

On November 22nd, I shared the theme of “Thinking on the Design of Cloud Native Go-Zero Micro-service Framework” in GopherChina Conference. The atmosphere was very warm, and it was said that the door was too crowded to enter, which was recognized by many senior developers. Please refer to the comments of Zhihu here. Part of the scene is as follows:

share The audience

On December 20, I was invited to attend Tencent Cloud Developer Conference and made a presentation entitled “After transformation – How to design flexible micro-service architecture in the face of traffic peak”. As follows:

start The outline

More than 20 go-Zero articles have been published in Nuggets, sharing with users the principles and implementation of microservices framework design in detail, as detailed here.

Community recognition

The wechat community of nearly 3,000 people has formed a good community atmosphere with enthusiastic technical discussions and mutual help among users every day. We also got a lot of feedback from our users, which pointed the way for us to further enhance Go-Zero! 👏

Github Star normally grows by around 1000 stars per month, with an average of 33+ stars per day. Now it grows by 5300+ stars.

Technology Outlook for 2021

  • It is expected to further enhance go-Zero’s engineering efficiency, allowing developers to write less code (business code) and have a stable microservice system
  • A small goal: 10,000 stars a year 💪

The project address

Github.com/tal-tech/go…

Welcome to use Go-Zero and star to support us! 👏

Thank you

Thank you for supporting us all the time, as well as the many gopher who use go-Zero, the reason not to list, it is really too many people who helped us, I am afraid to accidentally miss a big guy 🤝

Denver annual essay | 2020 technical way with me The campaign is under way…