Spring Cloud (ii) Service (registration) Center Eureka

Source: Internet
Author: User
Tags failover representational state transfer

Eureka is a product of Netflix's open source offering service registration and discovery, which provides complete services registry and service discovery implementations. is also one of the most important and core components of the Springcloud system.

Background Information Service Center

The service center, also known as the Registration Center, manages various service functions including service registration, discovery, fusing, loading, downgrading, etc., such as Dubbo admin backstage functions.

With the service center call relationship what will change, draw a few diagrams to help understand

Project A calls Project B

Normal call to project a request item B

With the service center, any service can not be removed directly, all need to call through the service center

Project A calls project B, and Project B invokes Project C

The step that is called at this time is two steps: The first step, project a first requests the Project B server from the service center, and then project B requests the Project C service from the service center.

The above project is just two or three simple calls between each other, but if the project is more than 20 30, at the end of 15, our distributed project reached more than 20, draw a picture to describe the relationship between the dozens of items are all lines, any one of the project changes, Will implicate several projects followed by reboots, big trouble and error prone. Service Center to get services you do not need to focus on the project IP address you call, consisting of several servers, each time directly to the service center to get the service can be used to call both.

As various services are registered to the service center, there are many advanced functional conditions to do. For example, several services provide the same service to do a balanced load, the monitoring server calls the success rate to do the fuse, remove the fault point in the service list, monitor the service invocation time to set different weights for different servers, and so on.

Before I say Eureka, I'll gossip about Netflix.

Netflix

The following introduction from the Baidu Encyclopedia:

Netflix is an American company that offers internet streaming in the United States, Canada, custom DVDs, and Blu-ray discs online rental business. The company was founded in 1997 and is headquartered in California State, and began its subscription service in 1999. In 2009, the company was able to provide up to 100,000 DVD films and 10 million subscribers. On February 25, 2007, Netflix announced that it had sold its 1 billionth DVD. In his report, Netflix's online film sales accounted for 45% of the total sales of U.S. users on-line movies in 2011.

When I first saw the word, it was at the beginning of a variety of American dramas or films, and the typical American drama that Netflix photographed was "the House of Cards," "The Drug Lords," and "Strange things." Later, when studying Springcloud, I discovered Netflix, wondering if they were the same company, checking that the email suffix on GitHub was really the same company, in fact Springcloud's microservices were based on Netflix's open source products.

Netflix's open source framework component has been proven in Netflix's massively distributed microservices environment for many years, and is gradually being accepted by the community as the standard component for structuring the microservices framework. Spring Cloud Open source, based primarily on the further encapsulation of the Netflix open source components, makes it easy for spring developers to build a microservices infrastructure. For companies that are planning to build a microservices framework, leveraging or referencing Netflix's open source microservices components (or spring Cloud) on the basis of the necessary enterprise customization is undoubtedly a shortcut to the MicroServices architecture.

Eureka

According to the official introduction:

Eureka is a REST (representational state Transfer) based service, that's primarily used in the AWS cloud for locating serv ICES for the purpose of load balancing and failover of middle-tier servers.

Eureka is a REST-based service that is primarily used in the AWS cloud to locate services for load balancing and failover of middle-tier servers.

Spring Cloud encapsulates the Eureka module developed by Netflix to enable service registration and discovery. The Eureka uses the C-s design architecture. Eureka server serves as the service registration feature for servers that are service registries. While other microservices in the system, use the Eureka client to connect to the Eureka Server and maintain a heartbeat connection. This allows the maintenance personnel of the system to monitor the operation of each micro-service in the system through Eureka Server. Some other Spring Cloud modules, such as Zuul, can be used by Eureka Server to discover other microservices in the system and execute related logic.

The Eureka consists of two components: the Eureka server and the Eureka client. The Eureka server serves as the service registration server. The Eureka client is a Java client that simplifies the interaction with the server, acts as a polling load balancer, and provides failover support for the service. Netflix uses additional clients in its production environment, which provides weighted load balancing based on traffic, resource utilization, and Error state.

Use a picture to recognize the following:

Briefly describes the basic architecture of Eureka, consisting of 3 characters:

1. Eureka Server

    • Provide service registration and discovery

2. Service Provider

    • Service Provider
    • Registering their services with Eureka so that service consumers can find

3. Service Consumer

    • Service Consumer
    • Get a list of registered services from Eureka so you can consume services

Case Practice Eureka Server

Spring Cloud has helped me implement the service registry, and we just need a few simple steps to get it done.

1. Add Dependency in Pom

<Dependencies><Dependency><Groupid>org.springframework.cloud</Groupid><Artifactid>spring-cloud-starter</Artifactid></Dependency><Dependency><Groupid>org.springframework.cloud</Groupid><Artifactid>spring-cloud-starter-eureka-server</Artifactid></Dependency><dependency> <groupid>org.springframework.boot</groupid> << Span class= "Hljs-name" >artifactid>spring-boot-starter-test</artifactid> <scope> Test</scope> </dependency></DEPENDENCIES>            

2. Add annotations in the startup code @EnableEurekaServer

@SpringBootApplication@EnableEurekaServerpublic class springcloudeurekaapplication { public static void Main (string[] args) {springapplication.  Run (springcloudeurekaapplication.  class, args); }}

3. Configuration files

Under the default settings, the service registry will also try to register itself as a client, so we need to disable its client registration behavior, application.properties Adding the following configuration:

spring.application.name=spring-cloud-eurekaserver.port=8000eureka.client.register-with-eureka=falseeureka.client.fetch-registry=falseeureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
    • eureka.client.register-with-eureka: Indicates whether to register itself to Eureka Server, which is true by default.
    • eureka.client.fetch-registry: Indicates whether to obtain registration information from Eureka Server, which is true by default.
    • eureka.client.serviceUrl.defaultZone: Sets the address to interact with Eureka Server, which is dependent on the query service and registration service. The default is Http://localhost:8761/eureka; multiple addresses can be used, delimited.

After starting the project, visit: http://localhost:8000/, you can see the following page, which has not found any services

Cluster

Registry such a critical service, if it is a single point, encounter a failure is devastating. In a distributed system, the service registry is the most important basic part and should always be in a state of service. In order to maintain its availability, the use of clusters is a good solution. Eureka enables highly available deployments by registering with each other, so we only need to configure the Eureke server with other available serviceurl to enable a highly available deployment.

Two-node Registration center

For the first time, we try to build a two-node registry.

1, create application-peer1.properties, as the Peer1 Service center configuration, and will serviceurl point to Peer2

spring.application.name=spring-cloud-eurekaserver.port=8000eureka.instance.hostname=peer1eureka.client.serviceUrl.defaultZone=http://peer2:8001/eureka/

2, create application-peer2.properties, as the Peer2 Service center configuration, and will serviceurl point to Peer1

spring.application.name=spring-cloud-eurekaserver.port=8001eureka.instance.hostname=peer2eureka.client.serviceUrl.defaultZone=http://peer1:8000/eureka/

3. Host Conversion

Add the following configuration to the Hosts file

127.0.0.1 peer1  127.0.0.1 peer2 

4, Packaging start

Execute the following command in turn

#打包mvn clean package# 分别以peer1和peeer2 配置信息启动eurekajava -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2

After the startup is complete, the browser enters: http://localhost:8000/

It can be seen from the graph that Peer1 's registry DS replicas already has peer2 related configuration information and appears in Available-replicas. We manually stop Peer2 to see that Peer2 will move to the Unavailable-replicas column, indicating that Peer2 is not available.

The configuration to this two-node is complete.

Eureka Cluster Usage

In the production we may need three or more than three registries to ensure the stability of the service, the principle of configuration is actually the same, the registration center points to other registries respectively. This only describes the configuration of the three clusters, in fact, and the two-node registry similar to each of the registration center points to another two nodes can be configured using APPLICATION.YML.

APPLICATION.YML configuration details are as follows:

---spring:  application:    name: spring-cloud-eureka  profiles: peer1server:  port: 8000eureka:  instance:    hostname: peer1  client:    serviceUrl:      defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/---spring:  application:    name: spring-cloud-eureka  profiles: peer2server:  port: 8001eureka:  instance:    hostname: peer2  client:    serviceUrl:      defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/---spring:  application:    name: spring-cloud-eureka  profiles: peer3server:  port: 8002eureka:  instance:    hostname: peer3  client:    serviceUrl:      defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/

Start the Eureka registry with the configuration parameters of Peer1, Peer2, and Peer3 respectively.

java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer1java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer2java -jar spring-cloud-eureka-0.0.1-SNAPSHOT.jar --spring.profiles.active=peer3

After the startup is complete, the browser enters: http://localhost:8000/

You can see the information about Peer2 and Peer3 in Peer1. The Eureka Cluster has also been completed

Sample code



Reference:

Spring Cloud Building MicroServices Architecture (vi) High-availability service registry

Peer Awareness

Spring Cloud (ii) Service (registration) center Eureka

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.