微服务及Spring Cloud那点事

微服务近两年非常火,虽然微服务应用架构及技术的探索和实践早在2010年以前就开始,但是真正落地并得到有效推广也就在最近两年,其中主要得益于以docker等容器技术及PaaS平台技术的成熟和商业应用。

什么是微服务架构

     微服务一词来源于Martin Fowler的一篇博文,简单的说,微服务是系统架构上的一种设计风格,它的核心是将一个独立的系统拆分为多个细分的小型服务,同时这些服务独立的运行在各自独立的进程或者容器中,服务之间通过RESTful风格的API进行数据的交互通信。被拆分的服务都围绕着系统同某个模块或者功能集合进行构建,并维护着自身的数据存储、业务开发、持续集成与交付。

为什么需要微服务架构

     传统的应用系统架构中,一般出于企业组织架构的限制,架构师往往会根据业务部门的业务条线构建单独的项目。那么随着业务的发展,业务需求不断增加,项目的体量慢慢变得臃肿。同时近年移动互联网快速发展,单体项目对多终端的服务支持慢慢变得力不从心。从持续集成与交付的角度看,随着单体项目的臃肿,一些微小的程序调整,对整体项目构建和部署来说将是一场灾难。也正是基于此,微服务架构诞生了并被大家关注和推崇,甚至一些人达到狂热的地步,非“微”不欢。

微服务架构的优缺点

     架构以及技术最终还是要回归到实际价值本身,一味的追求热点架构技术并不意味着项目各项成本的降低,适用才是架构的出发点。如何选择需要首先从架构技术本身的优缺点来判断。

    优点:

        1. 拆解了单体服务的复杂度,易于业务的理解、开发及持续交付。

        2. 每个服务独立部署,非常适合灰度发布及弹性扩容。

        3. 没有技术局限,服务的实现技术可根据实际情况选择最优。

        4. 统一的服务API管理,服务开箱即用,有利于新产品的快速迭代。

        5. 结合PaaS平台完美的实现DevOps。

    不足:

        1. 大量的独立服务进程,增加了测试、运维和管理的难度。

        2. 分布式架构固有复杂度,系统容错、网络延迟、分布式事务、异步消息等。

        3. 基础建设成本较高,PaaS平台的建设、持续交付及服务监控等建设成本高。

   尽管微服务架构有很多缺点和问题,但是其实现的敏捷开发和自动化部署等优点依然被广泛推崇,所以解决这些缺点也成为大拿们的努力的目标。

微服务架构的基础要素

基础要素

    服务网关:通过路由配置及注册中心向外统一通过API服务,同时提供服务负载。

    服务注册中心:主要管理服务的发布与订阅。

    服务提供者:API服务的具体实现及提供者。

Spring Cloud与微服务

    

      Spring Cloud是微服务架构的一组生态化实现,是基于Spring Boot实现的微服务架构开发工具,它为微服务架构中涉及的配置管理、服务治理、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一套简单的开发方式。

Spring Cloud主要组件介绍

Spring Cloud Config:配置管理工具,支持使用Git存储配置内容,可以使用它实现应用配置的外部化存储,并支持客户端配置信息刷新、加密/解密配置内容等。

Spring Cloud Netflix:核心组件,对多个Netflix OSS开源套件进行整合。

    1、Eureka:服务治理组件,包含服务注册中心、服务注册于发现机制的实现。

    2、Hystrix:容错管理组件,实现断路器模式,帮助服务依赖中出现的延迟和为故                         障提供强大的容错能力。

    3、Ribbon:客户端负载策略的服务调用组件。

    4、Feign: 基于Ribbon和Hystrix的声明式服务调用组件。

    5、Zuul: 网关组件,提供智能路由、访问过滤等功能。

    6、Archaius:外部化配置组件。

Spring  Cloud  Bus:事件、消息总线,用于传播集群中的状态变化或事件、以出发后须的处理,比如用来动态刷新配置等。

Spring  Cloud  Cli:用于在Groovy中快速创建Spring Cloud应用的Spring Boot CLI插件。

...

END

     微服务及Spring Cloud所涉及的较多,一篇拙漏的文章难以对其进行全面介绍,同时实践才是最好的参考,后续文章中作者将会把具体的项目实践以及实践中的常见问题分享给大家,感谢大家关注。

猜你喜欢

转载自www.cnblogs.com/lumes/p/10426344.html
今日推荐