Architect's Road-Microservice Technology Selection

As an architect, you need to plan product technology routes and be responsible for technology selection. The selection of technology stack mainly refers to the following standards:

  • Safe and stable, security vulnerabilities cannot be frequently exposed

  • Activeness of the open source community, priority is given to joining Apache components

  • First-tier Internet companies have launched products, and large companies endorse them

  • Good document readability

This article brings you the back-end technology selection of the microservice architecture. When you need to select the technology, you can refer to it to design your own decision tree.

Development language

JAVA
mainstream programming language, suitable for building large-scale back-end services

Golang
Go language is the second open source programming language released by Google in 2009. Specially optimized for the programming of multi-processor system applications. Programs compiled with Go can be comparable to the speed of C or C++ code, and are safer and support parallel processes. Google has high hopes for Go. Its design is to allow the software to give full play to the advantages of multi-core processor synchronization and multiplexing, and to solve the trouble of object-oriented programming. Currently the best choice in the field of cloud computing!

Development IDE

IntelliJ IDEA
jetbrains products, smart code assistant, J2EE support, various version tools (git, svn, github, etc.), JUnit, CVS integration, etc. Multi-language support, the free version only supports a few languages ​​such as JAVA. The flagship version is a paid version, and a free version (features less than the flagship version).

VS Code
VS Code is a free, open source, high-performance, cross-platform, and lightweight code editor. At the same time, it does a good job in performance, language support, and open source community!

Development Technology

Microservice framework

Spring Cloud / Spring Cloud alibaba
Spring Cloud is an ordered collection of a series of frameworks. It uses Spring Boot's development convenience to cleverly simplify the development of distributed system infrastructure and provides a full set of microservice solutions.

RPC framework

RestTemplate&WebClient
Spring RestTemplate is a client provided by Spring for accessing Rest services

gRPC
GRPC is a high-performance, cross-language RPC framework open sourced by Google. It is based on the HTTP2 protocol and a RPC framework based on protobuf 3.x. Multi-language support; support link reuse, long links can be used in the cluster; after simple performance tuning, it can meet the needs of most business scenarios.

Distributed transaction

Seata
Alibaba's key open source project, Java development, high performance, no lock, no code intrusion, AT mode 0 code, support for MT mode non-transactional storage, active community, fast version update, easy to use!

Flow control, fuse degradation

Sentinel
Alibaba's key open source projects, Java development, convenient secondary development, and active community

API gateway

Spring Cloud Gateway
Spring first choice, convenient for secondary development, support asynchronous non-blocking

Kong
Kong is a highly available and easily expandable API Gateway project based on the Nginx_Lua module, which is open sourced by Mashape. Excellent performance, abundant plug-ins and basically ready to use out of the box, there is a certain threshold for use in the second opening.

Configuration Center

Nacos :
Alibaba's key open source project, which can be used as a registration/central configuration center at the same time, simplifies the technology stack, has a complete management interface, Java development, convenient secondary development, active community, and continuous update and iteration.

Apollo : It
is a distributed configuration center developed by the framework department of Ctrip. It can centrally manage the configuration of different application environments and different clusters. After the configuration is modified, it can be pushed to the application side in real time, and it has standardized permissions, process governance and other features. It is suitable for micro Service configuration management scenarios.

Service discovery

Nacos:
Alibaba's key open source project, which can be used as a registration/central configuration center at the same time, simplifies the technology stack, has a complete management interface, Java development, convenient secondary development, active community, AP/CP model, and it is constantly updated.

Zookeeper :
ZooKeeper is a distributed, open source distributed application coordination service, an open source implementation of Google’s Chubby, and an important component of Hadoop and Hbase; performance can satisfy larger-scale service discovery and configuration centers, effective High real-time performance, not suitable for large-scale real-time data synchronization scenarios; CP mode.

monitor

Prometheus
has a more comprehensive open source monitoring system, CNCF technology stack and active community

Grafana
Grafana is an open source measurement analysis and visualization suite. The front-end tool developed by pure Javascript can display custom reports, display charts, etc. by accessing libraries (such as InfluxDB). Mostly used in the monitoring of time series data, similar to Kibana. Grafana's UI is more flexible, rich in plugins, and powerful. The interface is simple and beautiful, supports free customization, and the community has rich Dashboard support.

SkyWalking
distributed tracking system, domestic link tracking, rich community documentation, top Apache project.

Log

ELK
distributed service log processing, a log ecosystem built around elasticsearch. It is widely used and easy to expand. With kibana, it is easy to retrieve logs and locate online problems.

Database middle

ShardingSphere
Apache ShardingSphere is positioned as a relational database middleware, supporting data sharding, read-write separation, multiple data copies, data encryption, shadow library pressure testing and other functions; rich in community documentation, it has become a top Apache project.

Serialization

Jackson
Spring is the first choice, stable and safe .

Protobuf
Protocol Buffer (referred Protobuf) is a lightweight efficient google open structured data storage format, can be used to structure data serialization, it is suitable for data storage or RPC data exchange format.

Fastjson is not recommended

development tools

Build tool

Maven: The
mainstream project construction and management tool. Maven is an open source project developed in pure Java under Apache. It is a tool for project construction and management; it provides help to manage the build, documentation, reports, dependencies, scms, release, and distribution Methods. You can easily compile code, perform dependency management, manage binary libraries, and so on.

Gradle
Gradle is an automated project construction tool based on the concepts of Apache Ant and Apache Maven. The Gradle build script is written in a domain-specific language of Groovy or Kotlin. It can automatically handle package dependencies, automatically deal with deployment issues, and conditional judgments are written intuitively.

Interface request tool

postman
postman is a powerful Chrome plug-in for web page debugging and simulating HTTP requests. It supports almost all types of HTTP requests and is simple and convenient to operate.

container

Docker
is an open source application container engine, based on the Go language and open source following the Apache2.0 protocol. Docker allows developers to package their applications and dependencies into a lightweight, portable container, and then publish it to any popular Linux machine, and it can also be virtualized. Using Docker can bring the following advantages: 1. Faster delivery and deployment; 2. Efficient deployment and expansion; 3. Higher resource utilization; 4. Simple management

Cluster management

Kubernetes
Kubernetes is an open source platform for automated deployment, expansion, and operation and maintenance of container clusters. With Kubernetes, you can respond to user needs quickly and effectively; deploy your applications quickly and predictably; expand your applications extremely quickly; seamlessly connect new application functions; save resources and optimize the use of hardware resources. Provides a complete open source solution for container orchestration management. Rich ecology, easy to expand; rich and stable functions, endorsed by large companies; easy to use.

Image management tool

Harbor
Harbor is an open source artifact warehouse. It is the first open source project originally created in China and has become a CNCF graduate. Users can protect products (such as container images, Helm Chart, etc.) through policies and role-based access control, scan images and avoid security vulnerabilities. Harbor has expanded the open source project Docker Distribution, adding features required by users (such as security, identity, vulnerability scanning and management).

Operating environment

operating system:

Linux<CentOS 7+>
Linux is a free-to-use and freely disseminated Unix-like operating system. It is a multi-user, multi-task, multi-thread and multi-CPU operating system based on POSIX and UNIX. It can run major UNIX tools, applications, and network protocols. It supports 32-bit and 64-bit hardware. Linux inherits Unix's network-centric design philosophy and is a multi-user network operating system with stable performance.

Web server

Tomcat<8+>
Tomcat server is a free and open source web application server. It is a lightweight application server. It is commonly used in small and medium-sized systems and where there are not many concurrent users. It is used to develop and debug JSP programs. Preferred.

Nginx
lightweight web server/reverse proxy server and email (IMAP/POP3) proxy server

NodeJs
server-side JavaScript environment

If this article is helpful to you,

Don’t forget to give me a triple:

Like, repost, comment

See you next time!

Favorite  equal to the white prostitute , thumbs up  is the truth!

End

Dry goods sharing

Here is a small gift for everyone, follow the official account, enter the following code, you can get the Baidu network disk address, no routines!

001: "A must-read book for programmers"
002: "Building back-end service architecture and operation and maintenance architecture for small and medium-sized Internet companies from scratch"
003: "High Concurrency Solutions for Internet Enterprises"
004: "Internet Architecture Teaching Video"
006: " SpringBoot Realization of
Ordering System" 007: "SpringSecurity actual combat video"
008: "Hadoop actual combat teaching video"
009: "Tencent 2019 Techo Developer Conference PPT"

010: WeChat exchange group

Recent hot articles top

1. The road of architects-virtualization technology and container Docker

2. Use Hexo to build your technical blog

3. Database optimization skills-SQL statement optimization

4. Database optimization-instance parameter optimization

I knew you were "watching"

Guess you like

Origin blog.csdn.net/jianzhang11/article/details/107031917