spingcloud 实现注册中心集群配置

Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现。Eureka 采用了 C-S 的设计架构。Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用 Eureka 的客户端连接到 Eureka Server,并维持心跳连接。这样系统的维护人员就可以通过 Eureka Server 来监控系统中各个微服务是否正常运行。Spring Cloud 的一些其他模块(比如Zuul)就可以通过 Eureka Server 来发现系统中的其他微服务,并执行相关的逻辑。

综上所述,在一个分布式系统中,服务注册中心是最重要的基础部分,理应随时处于可以提供服务的状态。为了维持其可用性,使用集群是很好的解决方案。

这篇文章给出了一个 Eureka Server 双节点集群的例子,以及一个N节点的例子。并且最后部署实践效果。

首先这里先截图双节点的的实现。博主我这里没有现成的服务器,所以就在本机测试了,只是弄了几个不同的端口,ip就默认locahost了

首先创建2个Eureka 注册中心,Eureka_A1,

Eureka_A2

两个注册中心的启动类都一样,maven数据仓库我这里就不截图了,网上一大堆

//标明当前是 注册中
@EnableEurekaServer
// 标明是springboot项目
@SpringBootApplication
public class NewMviewEureKaServcerApplication {
	
	public static void main(String[] args) {
		System.err.println("NewMviewEureKaServcerApplication Service Strat Success!");
		SpringApplication.run(NewMviewEureKaServcerApplication.class, args);
	}
	
}
A1 配置文件端口9110   A2 配置文件端口9111    在A1里面注册A2   在A2里面注册A1

然后是Eureka_A1的 properties文件

    server.port=9110
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    spring.application.name=eureka-server
    eureka.client.serviceUrl.defaultZone=http://localhost:9111/eureka/

然后是Eureka_A2的 properties文件

    server.port=9111
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    spring.application.name=eureka-server
    eureka.client.serviceUrl.defaultZone=http://localhost:9110/eureka/

上诉就是实现了2个注册中心互相注册,然后分别启动A1,A2的main,效果图如下



然后接着启动一个测试的服务,代码我这里就不截图了 直接上 注册中的截图



下面继续搭建N个注册中心的集群 这里就拿3个做实验了

在上面 A1,A2,的基础上改造 以及加一个A3

A1配置文件如下,主要就是实现了 A1往A2,A3里面注册,

    server.port=9110
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    spring.application.name=eureka-server
    eureka.client.serviceUrl.defaultZone=http://localhost:9111/eureka/,http://localhost:9112/eureka/
A2配置文件如下,主要就是实现了 A2往A3,A1里面注册,
    server.port=9111
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    spring.application.name=eureka-server
    eureka.client.serviceUrl.defaultZone=http://localhost:9112/eureka/,http://localhost:9110/eureka/

A3配置文件如下,主要就是实现了 A3往A2,A1里面注册,

    server.port=9112
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    spring.application.name=eureka-server
    eureka.client.serviceUrl.defaultZone=http://localhost:9111/eureka/,http://localhost:9110/eureka/

然后分别启动A1,2,3启动类一模一样跟上面 就不截图了,直接上效果图


其他的2个端口的就不截图了  我这里是OK 的 ,下面写一个简单服务 都往这3个注册中心里注册,直接上配置文件了

Java代码  大同小异  就不截图了

S1 服务提供properties,我的配置文件里面 是处理了

hystrix 容错的 你们可直接忽视最下面4行。我这里就不删除了,然后截图一下效果
#euerka
spring.application.name=new-mview-http
#port set  
server.port=10016
eureka.client.service-url.defaultZone=http://localhost:9110/eureka/,http://localhost:9111/eureka/,http://localhost:9112/eureka/

#feign\u5F00\u542F\u65AD\u8DEF\u7531
feign.hystrix.enabled=true
#\u56E0\u4E3A\u5386\u53F2\u6570\u636E\u8F83\u591A\u8BBE\u7F6E\u8D85\u65F6\u65F6\u95F4\u957F\u4E00\u70B9
hystrix.command.default.execution.timeout.enabled: false

效果如下:



接下来简单的在控制层 访问一下 看能不能正常访问,我控制是调用的服务。服务那边我就不上图了 只是简单的return一下

TestConterllor.java

@Controller
public class TestConterllor {

	@Autowired
	private RestTemplate restTemplate;
	
	@Autowired
	TestFignReasService testFignReasService;

	
	//ribbon的方式
	@RequestMapping(value = "/testsucc")
	public @ResponseBody String testResutl() {
		System.err.println("http test success");
		// getForObject("http://springboot-h2/user/" + 1, User.class);
		String u = this.restTemplate.getForObject("http://new-mview-server/testRonm/" + 1, String.class);
		System.out.println(u);
		return u;

	}
	
	//feign的方式
	@RequestMapping(value = "/testsuccss")
	public @ResponseBody String testResutlss() {
		System.err.println("http test fign success");
		String u = testFignReasService.returnReasData(1);
		System.out.println(u);
		return u;

	}

}

然后是 url访问   效果图


你们可以试着 关闭 A1,A2,A3其中的一个或2个 他还是可以正常使用的 我这里不截图了

猜你喜欢

转载自blog.csdn.net/wangbo54979/article/details/80775806
今日推荐