1.1 SpringCloud介绍
1.1.1 微服务架构演化
简而言之,微服务就是开发一组小型服务的方式来开发一个独立的应用系统,每个小型服务都运行在自己的进程中,并采用HTTP资源API轻量级的机制来互相通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据库存储技术。
其实微服务就是在业务垂直拆分的基础上,拆分的粒度更细。
1.1.2 微服务的优点
1. 易于开发和维护
业务分拆,一个微服务只关注一个特定的业务功能,所以它的业务清晰、代码量较少。开发和维护单个微服务相对简单。每个微服务业务复杂度低,方便理解、维护和调试。整个应用由若干个微服务构成。
2. 单个微服务启动快
单个微服务代码量少,启动比庞大的项目要快。
3. 故障隔离
某个服务宕机,其他服务照常使用。单体项目就可能发生雪崩,造成整个系统宕机。
4. 局部修改容易部署
传统单体项目修改一个功能就需要重新部署整个应用,而微服务只需对需要修改的服务重新部署,其他服务无需停止,甚至不相关的业务仍然可以继续执行。
5. 技术栈不受限
在微服务中,支持技术异构,可以根据软件团队擅长的技术去实现,如java、c#、c、php等,也支持异构数据库mysql、oracle、sqlServer等。
1.1.3 定义
Spring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, one-time tokens, global locks, leadership election, distributed sessions, cluster state). Coordination of distributed systems leads to boiler plate patterns, and using Spring Cloud developers can quickly stand up services and applications that implement those patterns. They will work well in any distributed environment, including the developer's own laptop, bare metal data centres, and managed platforms such as Cloud Foundry.
Spring Cloud就是一个全家桶,整合了市面上最好最先进的技术,形成一个工具集,并简化其中的操作,引领编程新方式。
1.1.4 官网
官网: http://projects.spring.io/spring-cloud/
手册: http://cloud.spring.io/spring-cloud-static/Dalston.SR2/
中文: https://springcloud.cc/
1.1.5 核心功能
l configuration management 配置中心
l service discovery 服务发现
l circuit breakers 断路器
l intelligent routing 智能路由
l micro-proxy 微代理
l control bus 控制总线
l one-time tokens 一次性令牌
l global locks 全局锁
l leadership election 选举算法
l distributed sessions 分布式会话
l cluster state 集群状态
1.1.6 核心组件架构图
1.1.7 规划内容和步骤
l 注册中心Eureka eureka + provider-user + consumer-client
l 前端负载均衡Ribbon consumer-ribbon
l RESTFul简易封装 consumer-ribbon-feign
l 断路器支持 consumer-ribbon-feign-hystrix
l API网关 Zuul gateway-zuul
l 异构开发语言Sidecar sidecar + nodejs
l 配置中心config configserver+ consumer-ribbon-feign-hystrix