分布式服务概述
- 一系列服务组装成系统
- 独立部署,独立运行
- 独立开发和维护
- 分布式管理
- 强调隔离性
微服务架构是什么
微服务架构是一个用分布式拆分业务逻辑,完成解耦的架构模式,就是把以前的mvc三层架构里面给独立成一个服务调用以前在一个进程内,调用BLL层的方法,现在是跨进程,调用服务来完成功能。
微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦。
意思就是把一个大型的单个应用程序和服务拆分成为数十个的支持微服务,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
SOA面向服务架构
Service-Oriented Architecture 面向服务架构:是一个组件模型,它将应用程序的不同功能单元(服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。
Gateway
Gateway:提供统一服务入口,让微服务对前台透明
聚合后台服务,节省流量,提升性能
提供安全,过滤,流控等API管理功能
SOA vs Micro Service
- SOA是为重用,微服务架构是为了重写
- SOA更水平,微服务是垂直
- SOA自上而下,微服务自下而上
微服务架构 —进程通信
共享存储
进程A进程B的关系数据都存储在一个第三方容器中例如Redis
- 被动式通信
- 门槛低
服务通信
比如通过Web Service、WebApi、WCF等
- 主动触发
- 数据序列化传递
- 跨平台
- http穿透防火墙
微服务架构—服务实例集群
主要是为了实现服务的高可用,可扩展
集群:就是负载均衡,多台服务器做相同的事情,共同承载压力
比如可以用Nginx 做服务集群
Nginx不能够注册于发现,健康检查,如果Nginx下的某台服务挂掉,Nginx是无法知道,所以它会继续转发。
Consul:
Consul既能够实现负载均衡又可以服务注册与发现,健康检查。
微服务架构----网关Cateway
网关又称为协议转换器。网关的功能是实现网络之间的相互连接。网关不仅可以让广域网之间相互连接,也可以让局域网之间相互连接。网关在计算机和设备之间起转换的作用,相当于一个翻译器,可以使不同的协议、语言、数据在不同的系统之间进行转换。
Gateway:
提供统一服务入口,让微服务对前台透明
聚合后台的服务,节省流量,提升性能
提供安全,过滤,流控等API管理功能
比如鉴权后授权
Cateway治理
缓存
熔断:单位时间内异常多少次,就指定时间内,网关直接放回失败
限流:单位时间内流量只允许多少次
降级:是指在特殊情况下,可以降低服务等级,甚至关闭。
微服务架构----鉴权&授权
微服务架构----瞬态故障处理
Polly
是一种.NET弹性和瞬态故障处理库,允许我们一非常顺畅和线程安全的方式来执诸如行重试,断路,超时,故障恢复等策略
微服务架构----分布式追踪Skywalking
分布式追踪和APM的Server端,它将包含Collector,Storage,独立的Web Ui,并使用OpenTracing规范来设计追踪数据。
微服务架构----ExceptionLess
Exceptionless
开源的日志收集和分析框架,能为应用提供实时错误、特性和日志报告。
微服务架构----统一配置中心
Apollo:
配置管理平台,能够集中化管理用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
微服务架构—分布式事务
微服务架构—容器化
docker是一个开源的应用容器引擎,可以打包应用依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows系统上,也可以实现虚拟化。
微服务架构—容器编排K8S
Kubernetes编排容器,是管理应用的全生命周期工具,从创建应用/部署,应用提供服务,扩容缩容,更新,都非常的地方便,而且可以做到故障自愈。
微服务架构----CI/CD
Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。