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个 他还是可以正常使用的 我这里不截图了
还没有评论,来说两句吧...