SpringCloud微服务架构解决方案(一) -- 理解微服务与springcloud技术栈

            本系列博客介绍了软件架构演进的过程和springcloud技术栈体系的基本概念和一个具体的案例介绍springcloud的应用方法,文章包含的主要内容如下:

1、介绍微服务架构特点。

2、介绍微服务技术栈的构成。

3、Spring Cloud Eureka服务治理的流程。

4、Spring Cloud Ribbon负载均衡的应用方法。

5、Spring Cloud Hystrix 断路保护的应用方法。

6、Spring Cloud Zuul 网关的作用及方法。

7、Spring Cloud Config、Spring Cloud Bus、Spring Cloud Sleuth等其它子项目的应用场景。

  1. 理解微服务
    1. 软件架构演进

软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程。

      1. 单体架构

536b1d0312b3715ce614a1e034cabcf1ab4.jpg

特点:

1、所有的功能集成在一个项目工程中。

2、所有的功能打一个war包部署到服务器。

3、应用与数据库分开部署。

4、通过部署应用集群和数据库集群来提高系统的性能。

优点:

1、项目架构简单,前期开发成本低,周期短,小型项目的首选。

缺点:

1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。

2、系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。

3、技术栈受限。

      1. 垂直架构

9bb4f0cca96a4f508d28d1825e0565d4a69.jpg

特点:

1、以单体结构规模的项目为单位进行垂直划分项目即将一个大项目拆分成一个一个单体结构项目。

2、项目与项目之间的存在数据冗余,耦合性较大,比如上图中三个项目都存在客户信息。

3、项目之间的接口多为数据同步功能,如:数据库之间的数据库,通过网络接口进行数据库同步。

优点:

1、项目架构简单,前期开发成本低,周期短,小型项目的首选。

2、通过垂直拆分,原来的单体项目不至于无限扩大。

3、不同的项目可采用不同的技术。

缺点:

1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。

2、系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。

      1. SOA架构

692ffed778e00f47f651ea125431358939c.jpg

特点:

1、基于SOA的架构思想将重复公用的功能抽取为组件,以服务的方式给各各系统提供服务。

2、各各项目(系统)与服务之间采用webservice、rpc等方式进行通信。

3、ESB企业服务总线作为项目与服务之间通信的桥梁。

优点:

1、将重复的功能抽取为服务,提高开发效率,提高系统的可重用性、可维护性。

2、可以针对不同服务的特点制定集群及优化方案。

3、采用ESB减少系统中的接口耦合。

缺点:

1、系统与服务的界限模糊,不利于开发及维护。

2、虽然使用了ESB,但是服务的接口协议不固定,种类繁多,不利于系统维护。

3、抽取的服务的粒度过大,系统与服务之间耦合性高。

      1. 微服务架构

3406c44b1808d8781e044fd9d2010043e2a.jpg

特点:

1、将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务。

2、微服务遵循单一原则。

3、微服务之间采用RESTful等轻量协议传输。

 

优点:

1、服务拆分粒度更细,有利于资源重复利用,提高开发效率。

2、可以更加精准的制定每个服务的优化方案,提高系统可维护性。

3、微服务架构采用去中心化思想,服务之间采用RESTful等轻量协议通信,相比ESB更轻量。

4、适用于互联网时代,产品迭代周期更短。

缺点:

1、微服务过多,服务治理成本高,不利于系统维护。

2、分布式系统开发的技术成本高(容错、分布式事务等),对团队挑战大。

    1. 什么是微服务

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

    1. Spring Cloud技术栈
      1. 微服务的技术栈

dbe82c468d67f82493338a18c8bd24924f3.jpg

 

负载均衡,网关路由:高可用、集群部署,校验、请求转发、服务集成。

服务治理:服务注册、发现。

容错:避免雪崩。

监控跟踪:监控资源利用、服务响应、容器资源利用情况。

消息总线:消息队列、异步通信。

配置管理:统一配置管理。

      1. Spring Cloud是什么

Spring Cloud为开发人员构建微服务架构提供了完整的解决方案,SpringCloud是若干个框架的集合,它包括spring-cloud-config、spring-cloud-bus等近20个子项目,它提供了服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理等领域的解决方案。

      1. Spring Cloud技术栈

微服务的兴起出现了很多优秀的公司和技术:

服务治理:Dubbo(阿里巴巴)、Dubbox(当当)、Eureka(Netflix)等 。

配置管理:Disconf(百度)、QConf(360)、Diamood(淘宝)等 。

服务跟踪:Hydra(京东)、Zipkin(Twitter)、Sleuth(Spring Cloud)等 。

 

Spring Cloud 提供一站式的微服务架构解决方案,如下图:

6d4f02673bc9cd634be5f3c81fba9196761.jpg

      1. 为什么使用Spring Cloud

微服务架构的优点表明它可以提高我们的生产力,但是分布式系统本身的技术成本问题给互联网那些创业型公司不少的挑战,阿里、百度等巨头所提供的微服务技术只是解决其中某个问题,而整合封装这些优秀的技术恐怕是Spring最擅长的领域了,Spring Cloud也正因为此而诞生。

使用Spring Cloud来构建微服务架构可以省去你整合各家技术的成本,Spring Cloud为我们构建微服务架构提供了一站式的解决方案,就好比当初Spring诞生是为解决EJB企业应用开发的众多问题而提供的一站式轻量级企业应用开发解决方案一样,随着使用Spring Cloud公司数量的增加,相信微服务将被Spring Cloud一统江湖。

      1. Netflix公司介绍

Spring Cloud的很多技术来源于Netfix(https://netflix.github.io/),摘自百度百科的信息如下:

7c7db224aa0e3e0bd0bb74b8b37ecb31050.jpg

 

  1. 开发环境
    1. Java8

Spring Cloud是基于Java构建,本案例使用Java8作为基础平台。

    1. Maven

优秀的架构离不开优秀的项目构建工具,本案例采用Maven来构建(使用apache-maven-3.3.9-bin)。

    1. Spring Boot

Spring Cloud是基于Spring Boot构建,本案例使用Spring Boot 1.5.4版本。

    <parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>1.5.4.RELEASE</version>

    </parent>

    1. Spring Cloud

Spring Cloud为了避免和各子项目的版本名称混淆,它采用伦敦地铁站命名。

当前版本情况如下:

 

本课程 使用Dalston.SR3版本。

    <!-- 导入Spring Cloud的依赖管理 -->

    <dependencyManagement>

        <dependencies>

            <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-dependencies</artifactId>

                <version>Dalston.SR3</version>

                <type>pom</type>

                <scope>import</scope>

            </dependency>

        </dependencies>

    </dependencyManagement>

    1. MySQL

MySQL作为数据库的第二把交椅甚至直逼Oralce这个老大,在互联网开发中MySQL的应用是最广泛的。本案例采用MySQL5来构建架构。

    1. IDEA

IntelliJ IDEA功能的强大及易用性不亚于Eclipse,据统计其使用人数已直逼Eclipse,成为老大指日可待。

本案例使用IDEA作为开发工具。

转载于:https://my.oschina.net/bigdataer/blog/1859971

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值