- cloud 提出:面向云环境的应用程序
专业名词
Netflix
-
线影片租赁提供商,主要提供Netflix超大数量的DVD并免费递送
-
很大程度上而言,Spring Cloud 1.0 是基于Netflix OSS组件。
-
在Spring环境中,Spring Cloud 非常友好地集成了Netflix 组件,使用了和Spring Boot相似的自动配置和惯例优于配置。
Pivotal 公司
pivotal
英 ['pɪvətl] 美 ['pɪvətl]
adj. 关键的;中枢的;枢轴的
n. 关键事物;中心事物
- Spring以及衍生框架、做缓存Redis、消息队列框架RabbitMQ、
- 还有更牛的Greenplum(数据仓库和商业智能),这些都是Pivotal公司的和 分布式缓存GemFire架构
PAAS
- 大数据+云的PaaS平台+敏捷开发
- PAAS平台即(Platform-as-a-Service:平台即服务),
- 把应用服务的运行和开发环境作为一种服务提供的商业模式。
- Docker Devops 以及公有云PAAS平台自动化运维
DevOps
- DevOps(Development和Operations的组合词)
- 是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。
- 它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。
- 透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。
- 它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务, 开发和运营工作必须紧密合作
RPC
-
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,
-
而不需要了解底层网络技术的协议。
-
Feign 底层是 http协议,性能性对低下
-
所以要在 Cloud 中继承 gRPC
-
Dubbo是一款高性能的Java RPC框架
-
Spring-cloud-dubbo 用dubbo的RPC
gRPC
- 是一个高性能、开源和通用的RPC框架,面向移动和HTTP/2设计。
- 目前提供C、Java和Go语言版本,分别是grpc、grpc-java、grpc-go。
- gRPC基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。
这些特性使得其在移动设备上表现更好,更省电和节省空间占用。 - gRPC由google开发,是一款语言中立、平台中立、开源的远程过程调用系统。
- RPC框架,Google 开源框架 gRPC
SOA
- 面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。
- 有两个角色:服务提供者 和 服务消费者
- 阿里开源的Dubo是SOA的典型实现
- Dubo 主要做 服务治理框架,其配置中心用Nacos(也包含动态服务发现)。通信方式用 RPC协议
微服务
-
架构风格
-
拆分成多个相互独立的微服务,各个微服务之间是松耦合的。
-
通过各种远程协议进行同步/异步通信,
-
各微服务均可以被独立部署,扩/缩以及升/降级
-
服务监控:
hystrix 和 turbine -
链路监控:
sleuth+ zipkin
hystrix
豪猪
turbine
英 ['tɜːbaɪn; -ɪn] 美 ['tɝbaɪn]
n. [动力] 涡轮;[动力] 涡轮机
sleuth
英 [sluːθ] 美 [sluθ]
n. 侦探;警犬
vi. 做侦探;侦查
- Dubbo 是一款高性能的 java RPC框架
- 电商微服务
- 用户
- 档期
- 商品
- 购物车
- 结算
- 订单
- 优惠
- 支付
分布式跟踪
-
zipkin 分布式跟踪
-
SkyWalking 分布式追踪系统 (cloud可以继承,更牛逼)
吴晟shèng 开源并提交到apache 孵化器的陈品
同时吸收了 、Zipkin Pinpoint CAT
支持非侵入式埋点
java技术栈 推荐使用Pinpoint Skywalking
本书 介绍了 Spring cloud Sleuth 和上面两个 -
其他:
Dapper–Google生产环境下的分布式跟踪系统,应运而生。
DDD
- 领域驱动设计(DDD:Domain-Driven Design)
Eric Evans的“Domain-Driven Design领域驱动设计”简称DDD, - Evans DDD是一套综合软件系统分析和设计的面向对象建模方法
中间件
-
中间件 操作系统 数据库 并列为 基础软件的三驾马车
-
本质可以归属于 技术架构
-
服务治理中间件
-
配置中心
-
全链路监控
-
-
全链路监控中间件,Skywalking ,
-
吸收了Zipkin/Pinpoint/CAT
-
支持非侵入式埋点。 (Pinpoint也支持非侵入式埋点)
-
SkyWalking 分布式追踪系统
-
分布式事务
-
分布式定时任务
-
消息中间件
-
API网关
-
分布式缓存
-
数据库中间件
SpringCloud 网关
-
API Gateway (APIGW/API 网关) :是出现在系统边界上一个面向API的,串行集中式的强管控服务。
-
网关的作用
- 协议适配
-
安全策略
- 连接管理
- 流量监控
- 熔断机制
- 降级容错
- 智能路由
- 监控/日志
-
统一接入
- 高性能
- 高并发
- 高可靠
- 负载均衡
- 容灾切换
- 异地多活
-
协议适配器
-
流量管控
-
安全防护功能
- ip黑名单
-
网关对外暴露http协议,而后端服务可能是 dubbo的 RPC服务
- php 服务
- 通过一系列的filter处理完毕之后,需要进行协议适配
-
设计理念:
- Integrate Everything 充分利用现有开源框架,在它们之上设计一套统一规范,能够无缝切换底层实现
integrate
英 ['ɪntɪgreɪt] 美 ['ɪntɪɡret]
vt. 使…完整;使…成整体;求…的积分;表示…的总和
vi. 求积分;取消隔离;成为一体
adj. 整合的;完全的
n. 一体化;集成体
react
英 [rɪ'ækt] 美 [ri'ækt]
vi. 反应,作出反应;产生(化学)反应;
zuul和gateway对比
-
zuul
-
zuul 做 灰度,降级,标签路由,限流,waf封禁,需要自定义Filter
-
zuul是每个请求分配一个线程来处理
-
zuul最多能达到1000至2000QPS
-
Zuul 所属项目 spring-cloud-netflix 为第一代网关
-
处理每个请求的方式是分别对每个请求分配一个线程来处理
最多能达到1000 至 2000 QPS
-
-
gateway
- Gateway基于Spring5.0 Spring Boot 2.0 和 Project Reacotr
- 简单,有效,统一 的 API路由管理方式
- 底层基于Netty实现
- (Netty的线程模型是多线程reactor模型,使用boss线程和worker线程接收并异步处理请求,具有强大的高并发处理能力。)
- 提供统一的路由方式,安全,监控/埋点,限流。
- Gateway 所属项目 spring-cloud-gateway 第二代网关
- Gateway 是 基于 Spring5.0 Spring Boot 2.0 和 Project Reactor
- Project Reactor(以下简称“Reactor”)与Spring是兄弟项目,侧重于Server端的响应式编程
- 底层基于 Netty 实现
- 安全 监控/埋点 限流
netty
- netty的线程模型是多线程reactor模型,使用boss线程和worker线程接收并异步处理请求,
- 具有很强大的高并发处理能力
Archaius
- 是Netflix公司开源项目之一,基于java的配置管理类库,
- 主要用于多配置存储的动态获取。
- Netflix Archaius 是一个功能强大的配置管理库。
- 它是一个可用于从许多不同来源收集配置属性的框架,提供对配置信息的快速及线程安全访问。
QPS
- 每秒查询率QPS是对一个特定的查询服务器在规定时间内
- 所处理流量多少的衡量标准。
Halo
- Halo是一款使用Java开发的开源博客系统,致力于打造最好的Java博客系统,且只想安安静静的做一个博客系统。
- 驱动领域 halo框架的设计,与 cloud 无缝整合
springCloud技术点
- spring cloud 网关 zuul,gateway
- 服务监控, hystrix+Turbine
- 链路监控:Sleuth+Zipkin 链路追踪Sleuth
- 全链路监控: Skywalking 推荐
- sidecar 多语言
- turbine 集群监控
- consul 注册中心
- Pipeline 部署管道
- Dataflow 数据处理
- Spring Cloud Config 和 携程开源配置中心Apollo 实现可视化可视化的管理平台
- cloud 支持:eureka zookeeper consul 作为注册中心
kubernetes
- kubernetes,简称K8s,是用8代替8个字符“ubernete”而成的缩写。
- 是一个开源的,用于管理云平台中多个主机上的容器化的应用,
- Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),
- Kubernetes提供了应用部署,规划,更新,维护的一种机制
- cloud 最有可能会被kubernetes+Istio 方案所替代, 比较云原生的微服务治理解决方案,spring cloud 没有任何优势, 随着k8s和istio的普及,这个演进的过程会很快,也许用不了太久
- k8s进一步对docker方便的编排。
Istio
- Istio - 大型微服务系统管理工具
- Istio的理论概念是Service Mesh(服务网络),
- 我们不必纠结于概念实际也是微服务的一种落地形式有点类似上面的SideCar模式,
- 它的主要思想是关注点分离,即不像SpringCloud一样交给研发来做,也不集成到k8s中产生职责混乱,
- Istio是通过为服务配 Agent代理来提供服务发现、负截均衡、限流、链路跟踪、鉴权等微服务治理手段。
- Istio开始就是与k8s结合设计的,Istio结合k8s可以牛逼的落地微服务架构。
- 优点:
- 1、关注点分离,对代码无侵入
- 2、服务治理相关较全面