End of 2017 Summary



It’s time to write the year-end summary again. At this time of the year, my mind is always churning, because I haven’t reflected and summarized it for too long. I only summarize it once a year. It’s really a little long. I owe too much and it’s a little difficult to sort it out. This is still a summary of work/technology.


In 2017, he led a small project from front to back. the technical system used openresty+springboot/cloud+postgres+statsd+graphite+grafana+sentry+elasticsearch+kafka+doc+kubernetes. This year is still a continuation of the above technical framework for in-depth:

  • docker & kubernetes(Usage level)

Stay in the use stage, considering the maturity of cloud platform technology, assuming you go out and start your own business, you don’t feel you need to build kubernetes. You can directly use the basic settings of kubernetes such as Aliyun and Tengxunyun, so there is no in-depth study.

  • spring cloud(Practice and Extension Levels)

This year is a year of in-depth practice of a spring cloud, but the production is still in the Camden.SR6 version, the current GA version is already Edgware, and the pre version has reached Finchley M4. Moreover, if the Camden version is migrated to the above version, it seems that there are some incompatibilities or changes, which are a little tired of follow-up. In addition, the main reason is that the production has already run stably, so there is no strength to upgrade it again, and stability is the main factor. When you do your next project, consider using the latest version directly. However, as Servimesh matures, the distributed set is further solidified into the basic settings, and the potential advantages of spring cloud in the future are less obvious. Moreover, with the popularity of go language and the enrichment of related ecology, many high concurrent services are gradually replacing java with go. If it is not for applications with strong business characteristics, the advantages of java may not be so great. Just like …Java may no longer be the preferred development language for e-commerceThis article said.

  • spring security(Level of usage and expansion)

This year, I went to see spring security and spring security oauth2 again. I felt a little bit less, lacked to implement a whole set of technologies to replace the existing authority control system, did not apply them on a large scale, and always felt that I did not have in-depth understanding. In addition, we began to attach importance to the knowledge of system security and are studying it.

  • kafka(Use and understand the basic principles)

The kafka version is too miscellaneous. Some companies use 0.8, some use 0.9, some use 0.10, and in 17 years they launched 0.11. Then the 1.0 version came out. For beginners, they felt a little caught off guard. Once they entered the technology, it was like the sea. It was really a sea of learning, so they had to pick and see. I mainly studied some details of the use and implementation of version 0.8, and also studied some differences between version 0.9 and version 0.8, as well as kafka stream, which was mainly introduced this year, and I may further understand it based on version 1.0.

  • redis / postgres / mongo / elasticsearch(Usage level)

These have not been used much this year, so they will be used once.

Talking about relational databases, I have not been interested in SQL and have not conducted in-depth research. I have seen too much object-oriented view. I have also seen too many examples of complex business requirements writing complex SQL and then hanging up the system. I always think that other ways of implementation can replace complex SQL and have better performance. The emergence of NOSQL and many non-transactional queries can basically be realized by synchronizing the structured/redundant data according to the query requirements into NOSQL.

The other several NOSQL, if you want to rank, it is estimated that redis will have priority, after all, it is too widely used, and it is estimated that you will have to learn Redis further next year. I don’t like mongo very much. I don’t feel as mature as elasticsearch for things like fragment duplication. here, the head should be ranked, and elasticsearch should be ranked in front of mongo. In the words of elasticsearch, I had thought about studying deeply before, but the version changed too fast. Previously it was version 1.x, but now it is version 6. x. I want to cry, especially the use of java api, and I am tired of studying. Another thing is that the cost of learning query syntax for mongo and elasticsearch is too high. elasticsearch is better. most scenes with ES SQL plug-ins can be queried with SQL, which is still rather awkward. mongo has no SQL plug-ins to check, so it is even more reluctant to learn mongo.

  • rabbitmq(Basic usage)

As for message queue, Rabbit mq is the most dazzling among the traditional MQ, but with the appearance of kafka and rocketmq, it is somewhat submerged. However, it is still worth learning and needs further practice. Focus on the open-messaging specification, starting with this.

  • openresty(To get a little used to)

When writing lua for the first time, I felt it was very difficult to debug. Without idea to prompt me, I always restart, request and check the log for verification. Later, I wrote too much and got a little used to it. I felt that it was OK. It was mainly nginx second restart, which was very cool. Further research is needed. However, with the appearance of go, there are gateways for subsequent go, such asjanus, visual can spell a spell.

  • arch / system design(Entry level)

In terms of system architecture, I feel that I am still at the entry level. Further study and improvement are needed, not only in terms of technical architecture, but also in terms of business architecture.


  • Harvest

After experiencing the back-end technology architecture and implementation from zero to one, the expectation is to initially have the ability to start a business and pull up a complete set of back-end technology architecture and implementation.

  • insufficient

The number of visits to the system is too low to expose problems. Some technology implementations are different in the number of visits of millions, tens of millions and hundreds of millions. Moreover, high concurrency scenarios will expose problems that are not well achieved by some technologies. This is the hard injury of this project done this year.

Achievement of goals

  • Continue to blog every day, continue to improve sg reputation (Complete)

This was completed, breaking 1000 reputation in 16 years and 6000 reputation in 17 years.

  • Answer stackoverflow more questions (Not up to standard)

This is not very good, with 255 prestige in 16 years and 457 prestige in 17 years, up 24,052 overall, but ranking 98894.

  • Every weekend the technology resumes (Not finished)

This is almost unfinished, is the most deadly, 18 years to strictly grasp this

  • I still need to continue running in summer, hoping to learn how to swim (Complete)

I didn’t learn swimming, but I did insist on running. Apart from rain and working overtime, I was too tired to run. I ran every Monday. I ran more than 80 kilometers in 17 years. At the peak, I could run 4km at a time, but it didn’t last long. I hope to run 5km more times in 18 years.

  • Less overtime, more promotion time and project management ability (Not up to standard)

Habitual overtime, feel the body will be working overtime gradually work overtime is broken, the time planning is not good, several times research problem research for several hours to one or two to sleep, too much damage to the body.


Learning Plan 2018:

  • Key study

System architecture (CASE MOCK), in-depth system security (OWASP), deep distributed cache (redisIn-depth study of open-tracing (kafka), in-depth study of nginx/openresty

Non-technical, the goal is to study financial investment and its combination with technology.

  • Frontier Technology Exploration

Service mesh and spring cloud may be in the limelight, but they are only limited to the java field. However, service mesh is not limited to languages. Further solidifying the distributed architecture at the bottom is another technological change.

I’ve always wanted to learn AI, but I didn’t find the motivation to start. I guess I’ll start with some theories of machine learning and find some practical points to learn while practicing.

Specific indicators

Hard index

  • Continue to sg every day, sg reputation exceeds 10000
  • Stackoverflow reputation exceeds 1000
  • Weekly technical resume /CASE STUDY (Complete let it crash series)
  • Complete at least one investment article per week (Gradually deepen financial business knowledge)
  • The number of annual running kilometers reaches 100+ kilometers.

Soft target

  • Complete the study of system security, distributed caching, open-tracing and nginx/openresty.
  • Research and practice of service mesh
  • Financial Technology Related Attempts
  • Practice of High Concurrency and Multiple Opportunities
  • More Research on Excellent Open Source Project Architecture/Code
  • Write More Open Source Projects

Article navigation

docker / kubernetes

http / tcp / network / io

nginx / openresty


java / jvm

image / pdf



security / spring security / oauth2

jdbc / redis / elasticsearch / mongo



arch / design / data structure

mac /linux /app build