vlambda博客
学习文章列表

白话微服务架构和SPRING CLOUD

(一)架构师思维:

架构师思维:快速开发、可维护、可扩充、安全灵活和高可用。

架构师渐进之路:解耦与互联

1、模块化设计,业务逻辑解耦

2、分布式部署,部署模块解耦

3、技术框架平台,封装基础技术构件,业务模块和技术栈解耦

4、应用开发平,封装基础业务功能,业务领域模块和业务保障模块解耦

5、微服务架构,服务解耦,实现服务自治,分布式部署,负载均衡

6、服务上云,IAASPAASSAAS。从卖产品到卖服务。

 

(二)什么情况会驱动你去学习微服务架构:

1、新建的大规模分布式系统优选微服务架构

2、企业现有系统有微服务改造的要求

3、基于微服务构建的系统的运维升级改造

4、准备搭建自己的基础微服务平台框架

5、技术储备,个人爱好

 

(三)为什么要微服务:

传统应用缺点:逻辑复杂、隔离性差、可用性差、模块耦合严重、代码臃肿

微服务化优点:高内聚、复杂性低、易于拆分和管理、独立部署和伸缩性强、迭代周期短

 

(四)什么情况下不需要微服务:

对于应用简单、用户少、规模小、单体应用、迭代周期长的项目,使用微服务框架没有什么意义。

(五)微服务简介:

 


 微服务拆分:1-服务和数据复制,实现分布式负载均衡;2-职责、分类、业务建模拆分,实现业务功能解耦和重用;3-按服务和数据的优先级划分,实现分类分级资源调度分配;4-前后端分离,使开发更高效;5-无状态服务,保障水平扩容。

DDD(领域驱动设计) 的思想去指导微服务的实践。

 

(六)微服务面临的问题:

1. 服务注册发现,微服务怎样统一管理和监控,微服务之间如何调用

2. 管理配置服务,怎样实现分布式配置同步

3. 请求网关,全链路跟踪,实现同一入口与负载均衡

4、应用限流控制,异常熔断,服务降级

5. 服务节点的负载均衡

6. 集中日志,自动化运维,弹性扩容

7. 消息机制

 

(七)微服务解决方案:

阿里等大厂家都推出了自己的微服务解决方案:


阿里&淘宝

当当

百度

360

京东

Netflix

Apache

Spring cloud

Linkedin

Twitter

服务治理

Dubbo

DubboX




Eureka

Consoul




分布式配置管理

Diamond


Disconf

Qconf


Archaius


Config



批量任务


Elastic-Job






Task

Azkaban


服务跟踪





Hydra



Sleuth


Zipkin

阿里开源中间件与 Spring Cloud 体系的融合叫spring Cloud Alibaba

spring Cloud Alibaba 与部分其他方案的对比: 

白话微服务架构和SPRING CLOUD


(八)一般的微服务框架:

 

白话微服务架构和SPRING CLOUD


1Service registry 服务注册:服务治理,所有microservices在注册中心注册,可以通过服务名称进行调研,而不关心其部署情况

2Config server 配置中心:实现集中配置管理与分布式配置同步服务

3Distribute tracing 分布式跟踪服务:容错、熔断、降级、限流

4API Gateway:验证、安全、动态路由、负载均衡

5、负载均衡:服务治理负载均衡;服务提供者负载均衡;gateway负载均衡

6microservices微服务:一个个相对独立的业务逻辑,包括服务提供者和服务消费者。

(九)Spring Cloud 是什么:

Spring Cloud是基于Spring BOOT的微服务体系框架解决方案和微服务开发工具包。提供分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等功能。Spring BOOT 简化配置文件,使用内嵌WEB服务器,专注简化配置和快速部署与开箱即用的工具箱。可以基于Spring BOOT快速开发单体服务。Spring Cloud 组件架构

 

白话微服务架构和SPRING CLOUD


Spring Cloud关注全局服务治理。

Spring Cloud微服务工具包,为开发者提供了在分布式系统的配置管理、服务发现、断路器、智能路由、微代理、控制总线等开发工具包,包含了多个子项目,比如:Spring Cloud ConfigSpring Cloud NetflixSpring Cloud CloudFoundrySpring Cloud AWSSpring Cloud SecuritySpring Cloud CommonsSpring Cloud ZookeeperSpring Cloud CLI等项目。

 

Spring Boot Spring Cloud 版本关系:

 

白话微服务架构和SPRING CLOUD


(十)分布式配置管理(Config Server):

分布式配置管理应该是分布式系统和微服务应用的第一步。想象一下如果你有几十个服务或应用需要配置,而且每个服务还分为开发、测试、生产等不同维度的配置,那工作量是相当大的,而且还容易出错。如果能把各个应用的配置信息集中管理起来,使用一套机制或系统来管理,那么将极大的提高系统开发的生产效率,同时也会提高系统开发环境和生产环境运行的一致性。 Spring Cloud Config配置管理开发工具包,可以让你把配置放到远程服务器,目前支持本地存储、Git以及Subversion。配置和程序分离,配置的变更可以同步刷新所有应用。 

白话微服务架构和SPRING CLOUD


 

 

(十一)服务注册及发现 Service registry)

服务注册与发现对于微服务系统来说非常重要。有了服务发现与注册,你就不需要整天改服务调用的配置文件了,你只需要使用服务的标识符,就可以访问到服务。

服务注册与发现流程:首先建立注册中心,服务提供者和服务消费者(微服务)自动注册到注册中心,客户端使用微服务名称进行微服务的访问。

白话微服务架构和SPRING CLOUD

Spring Cloud Netflix Eureka(Spring cloud 服务注册与发现):基于 REST 的服务,实现云端的负载均衡和服务发现注册。

 白话微服务架构和SPRING CLOUD


1、基于Eureka-Server 建立服务注册中心,可以拷贝复制多个,实现负载均衡

2、基于Eureka-client 实现服务提供者,实现的微服务在注册中心注册(续约和关闭)

3、基于Eureka-client 实现服务消费者,直接基于服务标识符访问服务,不关心服务提供者的具体位置,服务注册中心会提供服务提供者信息

 

(十二)负载均衡

白话微服务架构和SPRING CLOUD

Feign组合使用可以实现客户端的负载均衡。

(十三)熔断器

Netflix Hystrix:容错管理工具,旨在通过控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

白话微服务架构和SPRING CLOUD


 

(十四)网关

Netflix Zuul(服务网关):边缘服务工具,是提供动态路由,监控,弹性,安全等的边缘服务。

白话微服务架构和SPRING CLOUD


 

 

(十五)spring cloud其他子项目:

Spring Cloud Bus:事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

Spring Cloud for Cloud Foundry:通过Oauth2协议绑定服务到CloudFoundry,CloudFoundry是VMware推出的开源PaaS云平台。

Spring Cloud Sleuth:日志收集工具包,封装了Dapper,Zipkin(APM服务监控)和HTrace操作。

Spring Cloud Data Flow:大数据操作工具,通过命令行方式操作数据流。

Spring Cloud Security:安全工具包,为你的应用程序添加安全控制,主要是指OAuth2。

Spring Cloud Consul:封装了Consul操作,consul是一个服务发现与配置工具,与Docker容器可以无缝集成。

Spring Cloud Zookeeper:操作Zookeeper的工具包,用于使用zookeeper方式的服务注册和发现。

Spring Cloud Stream:数据流操作开发包,封装了与Redis,Rabbit、Kafka等发送接收消息。spring-kafka 项目将 Spring 核心概念应用于基于 Kafka 的消息传递解决方案的开发。它提供了一个“模板”作为发送消息的高级抽象。

Spring Cloud CLI:基于 Spring Boot CLI,可以让你以命令行方式快速建立云组件。


(十六)Spring Cloud Alibaba Nacos

 Nacos一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

 

白话微服务架构和SPRING CLOUD


(十七)基于Spring Cloud&Alibaba 微服务框架案例:FebsCloud-Cloud

详见《FEBS Cloud 微服务权限系统项目说明》

(在搭建过程中,踩了不少空,还好已经逐一解决,整理分享给大家少走弯路)

FEBS意指:FastEasy useBeautifulSafe

FEBS Cloud是一款使用Spring Cloud Greenwich.SR1Spring Cloud OAuth2Spring Cloud Security构建的权限管理系统,前端(FEBS Cloud Web)采用vue element admin构建。

软件文档:https://www.kancloud.cn/mrbird/spring-cloud/1263679

后端源代码:https://gitee.com/mrbirdd/FEBS-Cloud  

前端代码:https://gitee.com/mrbirdd/FEBS-Cloud-Web

 

FEBS后台服务模块:

服务名称

端口

描述

FEBS-Register

8001

微服务注册中心

FEBS-Auth

8101

微服务认证服务器

FEBS-Server-System

8201

微服务子系统(资源服务器)

FEBS-Server-Test

8202

微服务子系统(资源服务器)

FEBS-Gateway

8301

微服务网关

FEBS-Monitor-Admin

8401

微服务监控子系统

FEBS-Config

8501

微服务配置子系统

前端通过服务名称调用后端微服务功能:

 


系统架构如下: