切换到微服务体系结构将解决所有软件体系结构问题,对吧?好吧,它不会。但微服务的实施确实也有很大的价值。
Huseyin Babal最近指出,基于微服务的体系结构不能解决所有问题。然而,这是实现基础设施现代化的坚实举措。我们都知道,要在多年的时间内维护一个整体架构的挑战,所以我们寻找可持续性、灵活性和易于集成的新替代方案。以最佳实践的基础实现微服务体系结构可以极大地改善您的软件体系结构。
Huseyin是Aurea的首席软件架构师,也是Kloia的顾问。他最近的演讲《微服务架构的终极指南》涵盖了他每天工作的大部分经验,并展示了实现微服务体系结构的最佳实践。
在他的演讲中,他使用了Spring Boot进行应用开发,使用了consulticsearch & Kibana进行监控,使用了Docker & Jenkins进行持续交付。他介绍了涵盖每一种方法,包括大量的代码示例,以及10种最佳实践。
最佳实践#1 -努力达到the Glory of REST
实现REST api的好处(Glory)。看看Leonard Richardson的成熟度模型,REST 有四个层次。您可以使用一个EndPoint来启动0级(即软资源);然后是第一级,它有不同的资源,但是有相同的HTTP方法;第二级,使用不同的HTTP方法,如POST、PUT、DELETE等;最后,第3级——您有API响应的导航资源。
最佳实践#2 -使用Spring HATEOAS
这有助于您使用可导航的、restful api。
最佳实践#3 -使用分布式配置
这样,您就不会一次配置50个不同的配置。Consul可以用来保持配置在键/值。
最佳实践#4 -客户端代码生成
Huseyin建议,“要么使用Swagger生成任何受支持语言的客户端代码,要么使用带有少量注释的feign客户端,客户端负载平衡使用Ribbon。”
最佳实践#5 -持续交付
Huseyin用Jenkins和Docker举了一些例子。
最佳实践#6 -监控Monitor
事实上,监视一切。
最佳实践#7 -日志
hseseyin指出,有许多Docker日志驱动程序。他使用了GELF (Graylog扩展日志格式)的例子。
最佳实践#8 - APM
应用程序性能管理。这将收集额外的细节以帮助您解决问题。Zipkin是一个开源的选择,hseseyin走了进来。
最佳实践#9 - API网关,用于将数据聚合到特定的客户端
最佳实践#10 -事件源和CQRS(命令和查询职责分离)
命令改变对象的状态,但不返回数据。查询返回数据,但不改变对象的状态。