转载

服务的高可用 | 从0开始构建SpringCloud微服务(10)

照例附上 项目github链接

本项目实现的是将一个简单的天气预报系统一步一步改造成一个SpringCloud微服务系统的过程。本章主要讲解 实现服务的高可用

什么是高可用

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。

假设系统一直能够提供服务,我们说系统的可用性是100%。

如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。

很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。

如何保障系统的高可用

我们都知道,单点是系统高可用的大敌,单点往往是系统高可用最大的风险和敌人,应该尽量在系统设计的过程中避免单点。方法论上,高可用保证的原则是“集群化”,或者叫“冗余”:只有一个单点,挂了服务会受影响;如果有冗余备份,挂了还有其他backup能够顶上。

保证系统高可用,架构设计的核心准则是:冗余。

有了冗余之后,还不够,每次出现故障需要人工介入恢复势必会增加系统的不可服务实践。所以,又往往是通过“自动故障转移”来实现系统的高可用。

下面我们重点讲解通过集成Eureka设置多节点的注册中心,从而实现服务的高可用。

实现服务的高可用

集成Eureka

我们需要将前面拆分好的四个微服务:城市数据API微服务,天气数据采集微服务,天气数据API微服务,天气预报微服务,集成Eureka,实现服务的发现与注册功能。

主要的操作步骤为:

  1. 添加pom.xml配置
  2. 添加application.yml配置
  3. 添加注解

至于如何进行添加,我在上一章进行了详细的讲述,这里就不展开了。

启动服务

我们将各个服务生成jar包,并通过命令行指定端口进行启动,启动命令如下:

java -jar micro-weather-eureka-server-1.0.0.jar --server.port=8761

测试结果

服务的高可用 | 从0开始构建SpringCloud微服务(10)

从上图可以看到我们有4个微服务,每个微服务启动了两个实例。每个实例已经集成了Eureka客户端,并且在Eureka服务器中完成了注册。

各个微服务之间可以通过应用的名称相互访问,每个微服务启动了多个实例,这样当我们的任何一个实例挂掉了,因为在其他节点有注册,所以还可以提供服务,如此一来我们便实现了服务的高可用!

原文  https://segmentfault.com/a/1190000018458080
正文到此结束
Loading...