云原生应用架构上的核心关注点

前言:最近大家都在谈云原生应用和微服务架构,那么从架构角度来说云原生应用到底有哪些核心关注点呢?DaoCloud 首席架构师王天青在 “Architectural Cross-Cutting Concerns of Cloud Native Applications” 一文的基础上,对云原生应用的核心关注点做了总结。

来自 RedHat 的博客作者 Raffaele Spazzoli 写了一篇题为 “Architectural Cross-Cutting Concerns of Cloud Native Applications” 的文章,介绍了云原生应用架构上的几个核心关注点及业界实践方式。细读了文章之后,我为大家做了一些总结以帮助读者快速了解核心内容。

如何才能将现有的应用迁移到云环境呢?这是一个很多人和团队正在思考或者经历的事情。云的一个特点就是资源是动态管理的,比如动态分配 IP,动态挂载存储卷,动态分配网络。那如何才能让应用更好的适应云上资源动态分配这一特性呢(例如不能写死调用服务的 IP )?

cloud native application

 

微服务的鼻祖 Netflix 和 PaaS 提供商 Heroku 在过去的几年实践中获得了成功,最后以 Netflix OSS 组件和 12 factor App 的原则的方式反馈给了社区。从他们成功的经验中,我们可以总结出以下云原生应用架构上的核心关注点。

核心关注点:

  1. 服务发现a. 显示服务发现管理

    b. 隐示服务发现管理

  2. 负载均衡a. 客户端侧负载均衡

    b. 基于基础架构的负载均衡

  3. 配置管理需要有一个集中的,有版本管理的配置中心来管理各个服务的配置信息。
  4. 数据及状态管理有状态的服务,例如数据库,分布式缓存等,需要能够更好利用云基础架构。
  5. 日志聚合因为服务实例的生命周期变得短暂,如何能够把分散的日志聚合起来就显得更加重要。
  6. 分布式追踪微服务之后,服务之间的调用关系变得日益复杂,这就需要我们有追踪分布式调用的能力。
  7. 故障和延迟容忍服务数量呈级数增加,服务之间的调用关系也日益复杂,如何 Design for fail 就显得更加重要了。
  8. 功能开关可以通过一种简单的方式开启或者关闭一个功能。
  9. 健康检查我们需要知道整个服务集群里面每个服务的健康状况。

其中文章中提到了很多 Spring Cloud 提供的微服务组件,包括:

Spring Cloud 微服务组件:

  1. Spring Boot (基础框架)a. Actuator(应用监控框架)
  2. Cloud Discovery(服务发现)a. Eureka

    b. Consul

    c. ZooKeeper

  3. Cloud Routing(负载均衡)a. Ribbon(客户端负载均衡组件)
  4. Cloud Config(配置中心)a. Config Client(配置客户端)

    b. Config Server(配置服务器)

  5. Cloud Tracing(分布式追踪)a. Sleuth

    b. Zipkin

  6. 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 负责企业客户应用微服务架构转型。

 

Leave a Reply

Your email address will not be published. Required fields are marked *