美文网首页
1. springcloud - 微服务架构一站式解决方案

1. springcloud - 微服务架构一站式解决方案

作者: leesoft | 来源:发表于2019-06-28 01:24 被阅读0次

    1. 微服务架构的特点

    1.1 理解微服务

    软件架构经理了从单体架构、垂直架构、SOA架构到微服务架构的过程

    单体架构:

    • 所有的功能模块,放在同一个工程里面开发
    • 所有的功能打一个war包部署到服务器
    • 应用于数据库分开部署
    • 通过部署应用集群和数据库集群提高系统的性能和并发
    • 优点就是简单,开发成本低,缺点就是所有的功能都放在同一个工程里面开发,不易于开发、扩展以及升级维护,而且性能扩展只能通过扩展集群节点、成本高、有瓶颈。

    垂直架构

    • 以单体结构规模的项目为单位进行垂直划分,即将一个大型的项目拆分成一个个的单体结构的项目
    • 项目与项目之间存在数据冗余,耦合性较大。比如子模块中都可能会引用用户信息
    • 项目之间的接口多为数据同步接口
    • 优点:项目架构简单、前期开发成本低、周期短、小型项目首选。 同时通过业务的垂直拆分,原来的单体项目不至于无限扩大,不同的项目可以采用不同的技术实现
    • 缺点: 全部的功能都集成在一个工程中,对大型项目不易于开发、扩展以及维护

    SOA架构

    • 基于SOA架构的思想是讲重复公用的功能抽取为组件,以服务的方式给各个系统提供服务
    • 各个项目(系统)与服务之间采用webservice/rpc 等方式进行通讯
    • ESB企业服务总线作为项目与服务之间的通讯桥梁

    优点:

    • 将重复的功能抽取为组件,提高开发效率,提高可维护性,可重用行和可扩展性
    • 可以针对不同服务的特点制定集群或者优化方案
    • 采用ESB减少系统中的接口的耦合

    缺点:

    • 系统与服务的界限模糊,不利于开发以及维护
    • 虽然使用了ESB总线,但是服务的接口协议不固定,种类繁多,不利于维护
    • 抽取的服务粒度过大,系统与服务之间的耦合性高

    微服务架构

    • 将系统服务层完全独立出来,并见服务层抽取为一个一个的微服务
    • 微服务遵循单一原则
    • 微服务之间采用RESTFul等轻量协议传输

    优点:

    • 服务拆分力度更加细,有利于资源的重复利用,提高开发效率
    • 可以更加精准的指定每个服务的优化方案,提高系统的可维护性
    • 微服务架构采用去中心化思想,服务之间采用RESTful等轻量级协议通信,相比ESB更轻
    • 适用于互联网时代,产品迭代周期短

    缺点:

    • 微服务过多,服务治理成本高,不利于系统的维护
    • 分布式系统开发的技术成本高(容错,分布式事务等),对团队的技术能力挑战比较高

    1.2 集群、分布式、微服务的理解

    • 分布式:一个业务拆分多个子业务,部署在不同的服务器上
    • 集群: 同一个业务、部署在多个服务器上
    • 微服务的意思也就是将模块拆分成一个独立的服务单元、通过接口来实现数据的交互

    分布式是指将不同的业务分布在不同的地方。而集群指的是将几台服务器集中在一起,实现同一业务。

    分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。

    分布式,从窄意上理解,也跟集群差不多,但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。

    分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务就不可访问了。

    好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响。

    微服务的设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。

    分布式和微服的架构很相似,只是部署的方式不一样而已。

    分布式需要做好事务管理。

    集群模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到session而中止退出服务。

    一般配置Nginx*的负载容器实现:静态资源缓存、Session共享可以附带实现,Nginx支持5000个并发量。

    1.3 什么是微服务

    为适应企业的发展,提高软件研发的生产力,降低软件研发的成本,软件架构也做了升级和优化,将一个独立的系统拆分为若干个小的服务,每个小服务运行在不同的进程中,服务于服务之间采用http轻量协议传输数据,每个服务所拥有的功能具有独立性强、耦合度高的特点,这样的设计就实现了单个服务内的高内聚,服务于服务之间的低耦合效果,这一个一个的小服务就是微服务,基于这种方法设计的系统架构即为微服务架构

    2. 微服务技术栈的技术构成

    • 负载均衡、网关路由:高可用、集群部署,校验、请求转发、服务集成
    • 服务治理:服务的注册、发现
    • 容错:避免雪崩
    • 监控跟踪:监控资源的利用、服务的响应、容器资源利用
    • 消息总线:消息队列、异步通讯
    • 配置管理:统一配置管理

    2.1 Spring Cloud

    Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。

    2.2 Spring Cloud技术栈

    现有微服务技术结构

    服务治理:Duboo、Dubbox、Eureke、Netflix等
    配置管理:Disconf、QConf、Diamood等
    服务跟踪:Hydra、Zipkin、Sleuth等

    Spring Cloud集成了众多的解决方案,提供一站式微服务解决方案。(Nexflix公司)

    Spring Cloud的子项目,大致可分成两类:
    一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;

    第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色。对于我们想快速实践微服务的开发者来说,第一类子项目就已经足够使用,如:

    • Spring Cloud Netflix

      是对Netflix开发的一套分布式服务框架的封装,包括服务的发现和注册,负载均衡、断路器、REST客户端、请求路由等。

    • Spring Cloud Config

      将配置信息中央化保存, 配置Spring Cloud Bus可以实现动态修改配置文件

    • Spring Cloud Bus

      分布式消息队列,是对Kafka, MQ的封装

    • Spring Cloud Security

      对Spring Security的封装,并能配合Netflix使用

    • Spring Cloud Zookeeper

      对Zookeeper的封装,使之能配置其它Spring Cloud的子项目使用

    • Spring Cloud Eureka

      Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件中的一部分,它基于Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能。

    clipboard.png

    相关文章

      网友评论

          本文标题:1. springcloud - 微服务架构一站式解决方案

          本文链接:https://www.haomeiwen.com/subject/emdjcctx.html