转载自公众号:SpringForAll社区

确保你在分布式系统中,努力实现这些微服务的最佳实践,例如监控和REST成熟度。

使用微服务架构可以解决所有的软件架构的问题,对吗?当然,这是不对的。但是,使用微服务架构是有价值的。

Hüseyin Babal 最近发表了一个观点,即微服务架构是无法解决所有的问题的。但是,使用微服务架构是构建现代软件架构的坚实基础。在过去的许多年里,我们都知道维护单体应用而带来的挑战,所以 我们寻找一个新的选择来实现可持续,可扩展,易于集成的软件架构。以最佳实践为基础来实现微服务架构可以大幅度的改善你的软件架构。

Hüseyin 是aurea的首席软件架构师和Kloia的咨询师。他最近的演讲,微服务架构终极指南涵盖了他每天工作的大部分的经验和展现了实现微服务架构的最佳实践。

在他的演讲中,它使用Spring Boot来进行应用开发,Consul作为服务发现,Elasticsearrch 和Kibana作为监控,Docker和Jenkins作为持续交付。演讲中包含了十条最佳实践的代码示例演示。

最佳实践1 -- 尝试达到真正的REST

在意识到REST API的好处之后,我们可以查看上图的Leonard Richardson's 的成熟度模型,对于REST的使用有四个级别的定义。

级别0:使用一个端点来访问软件资源

级别1:使用相同的http方法来访问不同的资源

级别2:使用不用的http方法(例如 GET POST PUT DELETE)来访问不同的资源

级别3:API响应中拥有导航资源,这是真正的REST。

最佳实践2 -- 使用Spring HATEOAS

这个可以帮助你使用可导航的RESTful api接口。

最佳实践3 -- 使用分布式配置

通过这种方式,你不能一次性配置50不同的配置。Consul可以用来保持键/值的配置。

最佳实践4 -- 客户代码生成

Hüseyin 建议“要么使用Swagger来生成任何支持的语言的客户端代码,要么通过注解来使用Feign客户端,以及使用Ribbon进行客户端的负载均衡”。

最佳实践5 -- 持续交付

Hüseyin 使用Docker和Jenkins进行了持续交付的示例演示。

最佳实践6 -- 监控

事实上,监控无处不在。

最佳实践7 -- 日志

Hüseyin 指出大量的Docker 日志驱动。他通过使用GELF(Graylog Extended Log Format)来进行示例演示.

最佳实践8 -- APM

应用性能管理。APM通过搜集额外的详细信息来帮助你解决问题。Hüseyin 表示Zipkin是一个开源产品中的一个可选方案。

最佳实践9 -- 数据聚合到特定的客户端的API网关

最佳实践10 -- 事件订阅和CQRS(命令和查询响应分离)

一个命令可以改变一个对象的状态,但是不会返回数据。一个查询会返回数据,但是不会更改对象的状态。


原文:https://dzone.com/articles/10-best-practices-for-microservice-architectures

作者: Derek Weeks

译者:ForeverL888

- END -

 近期热文:

关注我

微服务架构10条最佳实践相关推荐

  1. 微服务架构下一致性最佳实践

    在开发或软件架构的过程中,经常会遇到一致性的问题.尤其是在微服务架构下,每个微服务都有自己的数据库,导致微服务架构的系统不能简单地满足 ACID,我们就需要寻找微服务架构下的数据一致性解决方案. 传统 ...

  2. 公有云上基于微服务架构SAAS产品研发实践「活动通知」

    公有云SAAS产品不同于传统的软件包产品,我们不仅需要负责软件的研发,同时需要负责产品的运维,面对众多用户,需要保障产品7X24不间断运行:客户业务是不断变化的,产品需要在持续运行过程中进行持续升级, ...

  3. 微服务架构10个最重要的设计模式

    自从软件开发的早期(1960年代)以来,解决大型软件系统中的复杂性一直是一项艰巨的任务.多年来,软件工程师和架构师为解决软件系统的复杂性进行了许多尝试:David Parnas的模块化和信息隐藏(19 ...

  4. docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...

    编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...

  5. 微服务架构下的软件测试实践

    随着企业开发模式逐渐从传统的整体式(Monolithic)产品交付,向快节奏的微服务架构迁移,软件测试人员也必须相应地调整自己的测试方法和工具,才能多快好省地提高测试覆盖率,尽早发现潜在的缺陷.在快速 ...

  6. 胡忠想|微博微服务架构的Service Mesh实践之路

    前言 说到Service Mesh,在如今的微服务领域可谓是无人不知.无人不晓,被很多人定义为下一代的微服务架构. Service Mesh在诞生不到两年的时间里取得令人瞩目的发展,在国内外都涌现出一 ...

  7. Dockerfile制作jdk镜像和微服务镜像部署的最佳实践【Dockerfile实战】

    因为公司之前搭建测试服务器是我搭建的,其中包含使用docker来部署微服务项目,于是将这篇Dockerfile的最佳实践记录于此,为避免大家被坑,希望此文能帮你解除疑惑~ ps:因为是公司服务器不是个 ...

  8. Spring cloud 微服务docker容器化最佳实践

    Spring cloud 是当下最炙手可热的微服务套件,我们将介绍如何整合Docker容器达到高效快捷的构建发布 采用了dockerfile-maven-plugin插件发布镜像到远程docker主机 ...

  9. 顶级程序员的10条最佳实践

    英文原文:10 best practices from top coders at Google, Pinterest & more 1.慎重选择第 1 门语言 编程语言各有不同,不过区别不大 ...

最新文章

  1. 创建原生JS insertafter()方法实现
  2. leetcode 34. 在排序数组中查找元素的第一个和最后一个位置(二分查找)
  3. mysql查询选课最少成绩最高_MySQL 练习
  4. SSM框架笔记12:Spring JdbcTemplate
  5. Kali Linux 网络扫描秘籍 第二章 探索扫描(二)
  6. stl源码剖析_《STL源码剖析》学习笔记
  7. 转: utf16编码格式(unicode与utf16联系)
  8. Dubbo服务治理(一):限流策略
  9. useradd/adduser 添加用户
  10. 天锐绿盾技术大讲堂:解密审批流程管理
  11. C语言从入门到精通 ————1.初识C语言
  12. 系统服务器iis如何启动不了,win7系统iis启动不了的详细解决步骤
  13. Python绘制污染玫瑰图
  14. 月薪1万在中国是什么水平?答案揭露残酷的收入真相
  15. foo bar foobar?
  16. Python 训练 Day 15
  17. Ubuntu系统下的实用软件推荐
  18. 【Java】Java编译时错误:A JNI error has occurred, please check your installation and try again
  19. 图书管理系统 (单链表实现,C++及文件操作,超详细)
  20. pyqt5背景色设置使用css或者是调色板

热门文章

  1. linux 可运行的最大 线程 进程 数
  2. linux 用户态与内核态通信方式简介
  3. linux 内核编译错误 .size expression for copy_user_generic_c does not evaluate to a constant
  4. OEM、ODM、OBM简介 (说一个软件是O出来的 O的含义)
  5. docker-compose 简介以及常用命令
  6. 网络请求中常见的加密机制和加密算法理解 流量加密
  7. Linux下cp命令 -f无效的解决方法
  8. _splitpath,_makepath分析路径
  9. 如何使用Rebase以及bind来重定位和绑定dll
  10. ubuntu c/c++ IDE编程环境