Spring Cloud系列(三)注册中心之Eureka

注册中心Eureka

    • 什么是Eureka?
    • 版本
    • 实战演练
      • Eureka服务端
      • Eureka客户端

什么是Eureka?

     Spring Cloud封装了Netflix下的Eureka模块来实现服务注册和发现。Eureka采用了C-S架构,Eureka Server是注册中心的服务端,作为注册中心。而系统中的其它的微服务模块使用Eureka的客户端连接到Eureka Server(@EnableDiscoveryClient 或@EnableEurekaClient),并且通过维持心跳连接。系统的维护人员可以通过Eureka服务端来监控微服务模块是否正常运行。
     在分布式系统中有个著名的CAP理论,CAP代表的是一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。CAP理论指的是在这个理论中最多满足两个特性,一般来讲,基于网络的不稳定性,分布容错是不可避免的,所以我们默认CAP中的P总是成立的。

一致性(Consistency):分布式系统中时刻保持数据一致性;
可用性(Availability):在系统集群的一部分节点宕机后,系统依然能够响应用户的请求;
分区容错性(Partition tolerance):当节点出现一些网络故障时仍能够提供服务;

     一致性的强制数据统一要求,必然会导致在更新数据时部分节点处于被锁定状态,此时不可对外提供服务,影响了服务的可用性,反之亦然。因此一致性和可用性不能同时满足。
     Eureka保证的是AP,保证的是高可用和分区容错性。至于一致性问题则保证的是最终一致性,并不是时刻都会保证数据一致性;而接下来要讲的另外两种注册中心Consul和Zookeeper则保证的是CP(一致性和分区容错性);

版本

       Spring Cloud:Greenwich.RELEASE
       Maven环境:3.6.3
       Jdk:1.8

实战演练

Eureka服务端

Eureka服务端步骤:

1、导入pom.xml文件需要的依赖(等待片刻~);



	4.0.0
	com.cxk.client
	sgccplatform-framwork-eureka
	0.0.1-SNAPSHOT
	jar
	sgccplatform-framwork-eureka
	注册中心

	
		org.springframework.boot
		spring-boot-starter-parent
		2.1.1.RELEASE
		 
	

	
		UTF-8
		UTF-8
		1.8
		Greenwich.RELEASE
	

	
		
			org.springframework.cloud
			spring-cloud-starter-netflix-eureka-client
		
		
			org.springframework.cloud
			spring-cloud-starter-netflix-eureka-server
		
		
			org.springframework.cloud
			spring-cloud-starter
		
		
			org.springframework.boot
			spring-boot-starter-data-redis
		
		
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			io.projectreactor
			reactor-test
			test
		
	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				${spring-cloud.version}
				pom
				import
			
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	

2、新建application.properties配置文件,添加信息;

spring.application.name=eureka-server
server.port=6001

eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

3、修改主启动类;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        SpringApplication.run(EurekaServerApplication.class, args);

    }
}

     操作完上面三个步骤之后,接下来要做的就是run启动类。以一个普通java程序的方式来运行便可以,当我们看到有下图字样的时候便证明启动成功!

     启动成功之后,我们可以通过Eureka给我们提供的UI界面来访问,在浏览器输入http://localhost:6001便可以进入界面;
Spring Cloud系列(三)注册中心之Eureka_第1张图片Spring Cloud系列(三)注册中心之Eureka_第2张图片

Eureka客户端

Eureka客户端步骤:

1、导入pom.xml文件需要的依赖(等待片刻~);




	4.0.0

	com.cxk.client
	sgccplatform-framwork-eureka-client
	1.0-SNAPSHOT
	sgccplatform-framwork-eureka-client
	http://maven.apache.org

	
		UTF-8
		UTF-8
		Greenwich.RELEASE
		1.8
	

	
		org.springframework.boot
		spring-boot-starter-parent
		2.1.1.RELEASE
		 
	

	
		
			org.springframework.cloud
			spring-cloud-starter-netflix-eureka-client
		
		
			org.springframework.cloud
			spring-cloud-config-client
		
		
			org.springframework.boot
			spring-boot-starter-web
		
	

	
		
			
				org.springframework.cloud
				spring-cloud-dependencies
				${spring-cloud.version}
				pom
				import
			
		
	

	
		
			
				org.springframework.boot
				spring-boot-maven-plugin
			
		
	


2、新建application.properties配置文件,添加信息;

spring.application.name=eureka-client
server.port=6002

eureka.client.serviceUrl.defaultZone=http://localhost:6001/eureka/

3、创建主启动类;

@SpringBootApplication
@EnableEurekaClient
public class EurekaClientApplication 
{
    public static void main( String[] args )
    {
        System.out.println( "Hello World!" );
        SpringApplication.run(EurekaClientApplication.class, args);

    }
}

4、编写一个测试类;

@RestController
public class BaseController {

	@Value("${server.port}")
	String port;
	
	@RequestMapping("/test")
	public String test() {
		System.out.println("hello world from port " + port);
		return port;
	}
}

     是的,这就是一个普通的不能再普通的映射类了,它的作用就是接受来自浏览器的/test请求并返回相关信息的测试。
     其实客户端的创建和服务端创建步骤大同小异,但是文件内容有些不同,pom文件依赖不同,启动类注解不同,application.properties配置文件的信息不一样,客户端需要配置Eureka的服务端地址,也就是注册地址。
     启动成功之后,我们可以通过Eureka给我们提供的UI界面来访问,在浏览器输入http://localhost:6001可以看到这个eureka-client已经注册进去了。
程序控
     然后我们浏览器输入http://localhost:6002/test,我们会在看到控制台打印相关信息,同时浏览器也返回相应的信息。
程序控
     至此,可以看到客户端已经成功注册进去,同时客户端也可以正常接收浏览器请求,我们可以开心的去实现我们的业务了!

这么好的文章,作者还会持续更新,不点关注还愣着干啥??

你可能感兴趣的:(吃透Spring,Cloud系列)