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

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 做了二次封装,主要负责完成微服务架构中的服务治理功能。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值