Learning goals

,

Pick up the information point I

Concept definition

Spring Cloud is a service governance platform. It is a collection of several frameworks that provide a full set of distributed system solutions. Includes: service registration and discovery, configuration center, service gateway, intelligent routing, load balancing, circuit breaker, monitoring trace, distributed message queue, and so on. (Reprinted from the article)

Through the Spring Boot style encapsulation, Spring Cloud shields the complex configuration and implementation principles, and finally gives developers a simple and easy to understand and deploy distributed system development kit. Developers can quickly start services or build applications and connect to cloud platform resources. Microservices are units of service that can be independently deployed, horizontally scaled, and independently accessed (or with a separate database). Spring Cloud is the big steward of these microservices. After adopting the architecture of microservices, the number of projects will be very large. Of course you need a lot of help.

subprojects

Spring Cloud includes many sub-projects. We will focus on two standard implementations of Netflix and Alibaba to introduce to you:

Spring Cloud Netflix first generation

Netflix is an American company that offers on-demand streaming over the Internet and customized DVD and Blu-ray discs for online rental in the United States and Canada. Founded in 1997 and based in Los Gatto, California, the company began its subscription service in 1999. In 2009, the company offered up to 100, 000 FILMS on DVD and had 10 million subscribers. On February 25, 2007, Netflix announced that it had sold its billionth DVD. According to a report by IHS, Netflix accounted for 45% of all movies sold online by subscribers in the US in 2011.

Development kits for a variety of Netflix components, including Eureka, Ribbon, Feign, Hystrix, Zuul, Archaius, and more.

  • Netflix Eureka: A service governance component based on Rest services, including the implementation of service registry, service registration and service discovery mechanism, to achieve cloud load balancing and mid-tier server failover.
  • Netflix Ribbon: service invocation component for client load balancing.
  • Netflix Hystrix: fault tolerance management tool that implements circuit breaker mode and provides greater fault tolerance for delays and failures by controlling the nodes of service.
  • Netflix Feign: Declarative service invocation components based on the Ribbon and Hystrix
  • Netflix Zuul: microservice gateway, which provides dynamic routing and access filtering services.
  • Netflix Archaius: configuration management API, which provides dynamic typed properties, thread-safe configuration operations, polling framework, callback mechanism, and more.

Spring Cloud Alibaba second generation

Like Spring Cloud, Spring Cloud Alibaba is a microservices solution. Spring Cloud Alibaba is committed to providing a one-stop solution for microservice development. This project contains the necessary components for developing distributed application microservices that developers can easily use to develop distributed application services through the Spring Cloud programming model.

Relying on Spring Cloud Alibaba, Spring Cloud applications can be connected to Ali Micro service solutions by adding some annotations and a small amount of configuration, and distributed application systems can be quickly built through Ali middleware.

This picture shows the Spring Cloud Alibaba series components, including Ali open source components, Ali Cloud commercialization components and integrated Spring Cloud components.

Ali Open Source Components

  • Nacos: Alibaba open source product, a dynamic service discovery, configuration management and service management platform that makes it easier to build cloud native applications.
  • Sentinel: Lightweight flow control products oriented to distributed service architecture, take traffic as the entry point to protect the stability of services from multiple dimensions such as flow control, fuse downgrading, and system load protection.
  • RocketMQ: an open source distributed messaging system, based on highly available distributed clustering technology, provides low-latency, highly reliable message publishing and subscription services.
  • DubboApache Dubbo™ is a high-performance Java RPC framework for service communication.
  • Seata: Alibaba open source product, an easy-to-use high-performance microservice distributed transaction solution.

Ali Commercial Components

  • Alibaba Cloud ACM: An application configuration center that centrally manages and pushes application configurations in a distributed architecture.
  • Alibaba Cloud OSS: Ali Cloud Object Storage Service (OSS) is a massive, secure, low-cost and highly reliable cloud Storage Service provided by Ali Cloud. You can store and access any type of data in any application, anytime, anywhere.
  • Alibaba Cloud SchedulerX: A distributed task scheduling product developed by Ali middleware team, which provides second-level, accurate, highly reliable and highly available timed (Cron expression based) task scheduling service.
  • Alibaba Cloud SMS: Global SMS service, friendly, efficient and intelligent interconnection communication capabilities, help enterprises quickly build customer access channels.

As a new implementation of Spring Cloud system, Spring Cloud Alibaba has more functions compared with official components or other third-party implementations such as Netflix, Consul, Zookeeper, etc. :

Common components

  • Spring Cloud Netflix Eureka: Service registry.
  • Spring Cloud Zookeeper: Service registry.
  • Spring Cloud Consul: Service registration and configuration Manager.
  • Spring Cloud Netflix Ribbon: client load balancer.
  • Spring Cloud Netflix Hystrix: Service fault tolerance protection.
  • Spring Cloud Netflix Feign: declarative service invocation.
  • Spring Cloud OpenFeign(alternative to Feign)OpenFeign is a Spring Cloud annotation that supports Spring MVC on top of Feign, such as @requesMapping, etc. OpenFeign’s @FeignClient can parse the interface under SpringMVC’s @RequestMapping annotation and generate implementation classes through dynamic proxy, which can perform load balancing and call other services.
  • Spring Cloud Netflix Zuul: API gateway services, filtering, security, monitoring, traffic limiting, and routing.
  • Spring Cloud Gateway(alternative to Zuul): Spring Cloud Gateway is an official Spring Cloud Gateway developed based on Spring 5.0, Spring Boot 2.0 and Project Reactor technologies. Spring Cloud Gateway aims to provide a simple and effective unified API route management approach for microservices architectures. As a Gateway in the Spring Cloud ecosystem, Spring Cloud Gateway aims to replace Netflix Zuul. It not only provides a unified routing mode, but also provides basic Gateway functions based on Filter chain, such as: Safety, monitoring/burying, and current limiting.
  • Spring Cloud Security: Security authentication.
  • Spring Cloud Config: distributed configuration center. The configuration management tool supports the use of Git to store configuration content, supports the external storage of application configuration, supports client configuration information refresh, encryption and decryption configuration content, and so on.
  • Spring Cloud Bus: event, message bus for propagating state changes in the cluster (for example, configuration change events), in conjunction with Spring Cloud Config for hot deployment.
  • Spring Cloud Stream: message-driven microservices.
  • Spring Cloud Sleuth: Distributed service tracing.
  • Spring Cloud Alibaba Nacos: Alibaba open source product, a dynamic service discovery, configuration management and service management platform that makes it easier to build cloud native applications.
  • Spring Cloud Alibaba Sentinel: Lightweight flow control products oriented to distributed service architecture, take traffic as the entry point to protect the stability of services from multiple dimensions such as flow control, fuse downgrading, and system load protection.
  • Spring Cloud Alibaba RocketMQ: an open source distributed messaging system, based on highly available distributed clustering technology, provides low-latency, highly reliable message publishing and subscription services.
  • Spring Cloud Alibaba DubboApache Dubbo™ is a high-performance Java RPC framework for service communication.
  • Spring Cloud Alibaba Seata: Alibaba open source product, an easy-to-use high-performance microservice distributed transaction solution.

conclusion

Spring Cloud first generation Spring Cloud second generation
The gateway Spring Cloud Zuul Spring Cloud Gateway
The registry Eureka,Consul,ZooKeeper Ali Nacos, PpDAI Radar and others
Configuration center Spring Cloud Config Ali Nacos, Ctrip Apollo, accompanying payment ConfigKeeper, etc
Client load balancing Ribbon Spring Cloud LoadBalancer for spring-Cloud-Commons
fuse Hystrix Spring-cloud-r4j (Resilience4J), Ali Sentinel, et al
Link to track Sleuth + Zipkin Apache Skywaling, OpenTracing, etc

Although Eureka, Hystrix, etc., will not continue to be developed or maintained, it does not affect use at present. Anyway, thanks to open source, and hats off to Netflix for open source.

Release notes

Why does the Spring Cloud version use words instead of numbers?

This is designed to better manage the list of sub-projects for each Spring Cloud. Avoid confusion between the general version number and the version number of the subproject.

For example: Spring Cloud 2.2.0.RELEASE Spring Cloud Netflix 2.2.2.RELEASE if used in this way will cause developers to confuse the version number.

Define the rules

Use the names of London underground stations as the name of the version number, in alphabetical order, the later the version number is larger.

Release plan

The version number version instructions
BUILD-XXX Development version For internal use by the development team
M Milestone version A MileStone, M1, indicates the first MileStone version, and PRE indicates the preview version
RC Release candidate Release Candidate: the first observation period of a formal Release in which no new features are added and the focus is on debugging
SR Official Release Service Release. SR1 indicates the first official Release. GA indicates the stable version
GA Stable version It’s fully tested and available for distribution and it’s called General Availability (GA)

Subproject version description

For example: Spring Cloud Alibaba 2.1.0.release

  • 2: indicates the major version number. The major version number is updated when there is a major update to a functional module or when the overall architecture changes.
  • 1: indicates the second version number. The second version represents only partial changes.
  • 0: Changes the version number. It is usually a bug fix or minor change.
  • RELEASE: Greek letter version number. Mark the development phase of the current version of the software.

Greek letter version description

  • Base: Design phase. Only the corresponding design has no specific function.
  • Alpha: Initial version of software. There are more bugs.
  • Bate: Represents a significant improvement over Alpha, serious bugs removed, and some potential bugs.
  • Gamma: The Beta version was modified to become a Release Candidate for the final Release.
  • Release: This version represents the final version.

This concludes all the conceptual aspects of Spring Cloud.

Specific function realization.

  • Alpha: Initial version of software. There are more bugs.
  • Bate: Represents a significant improvement over Alpha, serious bugs removed, and some potential bugs.
  • Gamma: The Beta version was modified to become a Release Candidate for the final Release.
  • Release: This version represents the final version. (Reprinted from the article)

This concludes all the conceptual aspects of Spring Cloud.