前言:最近大家都在谈云原生应用和微服务架构,那么从架构角度来说云原生应用到底有哪些核心关注点呢?DaoCloud 首席架构师王天青在 “Architectural Cross-Cutting Concerns of Cloud Native Applications” 一文的基础上,对云原生应用的核心关注点做了总结。
来自 RedHat 的博客作者 Raffaele Spazzoli 写了一篇题为 “Architectural Cross-Cutting Concerns of Cloud Native Applications” 的文章,介绍了云原生应用架构上的几个核心关注点及业界实践方式。细读了文章之后,我为大家做了一些总结以帮助读者快速了解核心内容。
如何才能将现有的应用迁移到云环境呢?这是一个很多人和团队正在思考或者经历的事情。云的一个特点就是资源是动态管理的,比如动态分配 IP,动态挂载存储卷,动态分配网络。那如何才能让应用更好的适应云上资源动态分配这一特性呢(例如不能写死调用服务的 IP )?
微服务的鼻祖 Netflix 和 PaaS 提供商 Heroku 在过去的几年实践中获得了成功,最后以 Netflix OSS 组件和 12 factor App 的原则的方式反馈给了社区。从他们成功的经验中,我们可以总结出以下云原生应用架构上的核心关注点。
核心关注点:
- 服务发现a. 显示服务发现管理
b. 隐示服务发现管理
- 负载均衡a. 客户端侧负载均衡
b. 基于基础架构的负载均衡
- 配置管理需要有一个集中的,有版本管理的配置中心来管理各个服务的配置信息。
- 数据及状态管理有状态的服务,例如数据库,分布式缓存等,需要能够更好利用云基础架构。
- 日志聚合因为服务实例的生命周期变得短暂,如何能够把分散的日志聚合起来就显得更加重要。
- 分布式追踪微服务之后,服务之间的调用关系变得日益复杂,这就需要我们有追踪分布式调用的能力。
- 故障和延迟容忍服务数量呈级数增加,服务之间的调用关系也日益复杂,如何 Design for fail 就显得更加重要了。
- 功能开关可以通过一种简单的方式开启或者关闭一个功能。
- 健康检查我们需要知道整个服务集群里面每个服务的健康状况。
其中文章中提到了很多 Spring Cloud 提供的微服务组件,包括:
Spring Cloud 微服务组件:
- Spring Boot (基础框架)a. Actuator(应用监控框架)
- Cloud Discovery(服务发现)a. Eureka
b. Consul
c. ZooKeeper
- Cloud Routing(负载均衡)a. Ribbon(客户端负载均衡组件)
- Cloud Config(配置中心)a. Config Client(配置客户端)
b. Config Server(配置服务器)
- Cloud Tracing(分布式追踪)a. Sleuth
b. Zipkin
- Cloud Circuit Breaker(熔断器)a. Hystrix
b. Turbine
Spring Cloud 也在快速迭代中,对于完整的组件列表大家可以查看官网(http://projects.spring.io/spring-cloud/)。除了 Spring Cloud 本身,社区也有一些不错的项目,例如 Spring Boot Admin,基于 Spring Boot 的 Actuator 的功能实现,可以对 Spring Boot 应用做一个全方面的监控。
Spring Cloud 微服务组件的介绍已经有很多,接下来我们会介绍 Spring Cloud 微服务组件在容器化场景中的一些最佳实践。
作者介绍 | 王天青
王天青,DaoCloud 首席架构师,曾先后在麻袋理财担任职首席架构师,EMC 中国研究院任职主任工程师,工作十多年间,做过前端,做过后端, 对云计算有深入了解。目前对云原生应用之微服务架构及敏捷的基础架构(Docker)有比较多的研究和实践,同时对大型网站的技术架构有比较多的认识和实践,在 DaoCloud 负责企业客户应用微服务架构转型。
未经允许不得转载:DaoCloud道客博客 » 云原生应用架构上的核心关注点