想要设计自己的微服务?看这篇文章就对了 (3)

Ribbon是一个客户端负载均衡器,可以让你对HTTP和TCP客户端的行为进行大量控制。与传统的负载均衡器相比,每次线上调用都不需要额外的跳过 - 你可以直接联系所需的服务。

开箱即用,它本身与Spring Cloud和Service Discovery集成。 提供可用服务器的动态列表,因此Ribbon可以在它们之间取得平衡。

Hystrix

Hystrix是Circuit Breaker模式的实现 ,它可以控制通过网络访问的依赖关系的延迟和故障。主要思想是在具有大量微服务的分布式环境中停止级联故障。这有助于快速失败并尽快恢复 - 自我修复的容错系统的重要方面。

除了断路器控制之外,使用Hystrix还可以添加一个回退方法,以便在主命令失败时获取默认值。

此外,Hystrix会为每个命令生成执行结果和延迟的指标,我们可以使用它来 。

Feign

Feign是一个声明式HTTP客户端,可与Ribbon和Hystrix无缝集成。实际上,通过一个 spring-cloud-starter-feign 依赖关系和 @EnableFeignClients 注释,你可以拥有一整套负载均衡器,断路器和HTTP客户端,并具有合理的即用型默认配置。

以下是帐户服务的示例:

@FeignClient(name = "statistics-service") public interface StatisticsServiceClient { @RequestMapping(method = RequestMethod.PUT, value = "/statistics/{accountName}", consumes = MediaType.APPLICATION_JSON_UTF8_VALUE) void updateStatistics(@PathVariable("accountName") String accountName, Account account); }

你需要的只是一个界面

你可以在Spring MVC控制器和Feign方法之间共享 @RequestMapping

以上示例指定了所需的服务ID - statistics-service感谢Eureka的自动发现(但显然你可以访问具有特定URL的任何资源)

监控仪表板

在此项目配置中,每个带有Hystrix的微服务都通过Spring Cloud Bus(使用AMQP代理)将指标推送到Turbine。Monitoring项目只是一个带有Turbine 和 Hystrix Dashboard的小型Spring启动应用程序 。

让我们看看我们在负载下的系统行为:帐户服务调用统计服务,它响应模仿延迟。响应超时阈值设置为1秒。

img

0 ms delay   500 ms delay   800 ms delay   1100 ms delay  
表现良好的系统。吞吐量约为22个请求/秒。统计服务中的活动线程数量很少。中位服务时间约为50毫秒。   活动线程的数量正在增长。我们可以看到紫色线程池拒绝的数量,因此大约有30-40%的错误,但电路仍然关闭。   半开状态:失败命令的比例超过50%,断路器启动。睡眠窗口的时间量后,下一个请求通过。   100%的请求失败。电路现在永久开放。睡眠时间后重试不会再次关闭电路,因为单个请求太慢。  
日志分析

在尝试识别分布式环境中的问题时,集中日志记录非常有用。Elasticsearch,Logstash和Kibana堆栈使你可以轻松搜索和分析日志,利用率和网络活动数据。我的其他项目中描述随时可用的Docker配置 。

安全

高级安全配置超出了此概念验证项目的范围。要更真实地模拟真实系统,请考虑使用https和JCE密钥库来加密微服务密码和配置服务器属性内容( 有关详细信息,请参阅 )。

基建自动化

与部署整体应用程序相比,部署微服务具有相互依赖性,这是一个复杂得多的过程。拥有一个完全自动化的基础设施非常重要。我们可以通过持续交付方法获得以下好处:

随时发布软件的能力。

任何构建都可能最终成为一个版本。

构建工件一次,根据需要进行部署。

这是一个简单的Continuous Delivery工作流程,在此项目中实现:

img

在此 配置中,Travis CI为每个成功的Git推送构建标记图像。因此latest ,Docker Hub上的每个微服务始终都有一个 映像,旧的映像使用Git commit hash进行标记。如果需要,可以轻松部署其中任何一个并快速回滚。

如何运行所有的东西?

这真的很容易,我建议你试试。请记住,你要启动8个Spring Boot应用程序,4个MongoDB实例和RabbitMq。确保4 Gb 的计算机上有 RAM。你始终可以通过网关,注册表,配置,身份验证服务和帐户服务运行重要服务。

在你开始之前

安装Docker和Docker Compose。

出口环境变量: CONFIG_SERVICE_PASSWORD, NOTIFICATION_SERVICE_PASSWORD, STATISTICS_SERVICE_PASSWORD, ACCOUNT_SERVICE_PASSWORD, MONGODB_PASSWORD

生产模式

在此模式下,所有最新图像都将从Docker Hub中提取。只需复制 docker-compose.yml 并点击即可 docker-compose up -d。

发展模式

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgyyg.html