定义:微服务是一种架构风格、由马丁在其博文中首次提出;
特点:1. 一组小的服务 2.独立的进程 3.轻量级级通信协议(即http) 4.基于业务能力 5. 独立部署 6.无集中式管理
挑战:1. 分布式复杂性 2. 数据一致性 3.运维复杂性 4. 测试复杂性
康威法则:公司的组织架构应与开发系统的架构保持一致,这样能提升研发效率;
引入微服务的适用性:当系统越来越复杂时,如果采用单系统可以会带来生产力的降低,这样可以考虑引入微服务,根据实践在一个百人团队中可以采用微服务架构;对于新系统不建议一上来就使用微服务架构,里面涉及到基础设施的投入、服务的拆分等;
组织引入微服务:在微服务架构时组件跨职能部门的微服务团队,以平台方式交付;
阿里的微服务中台战略:包括技术中台(IaaS、PaaS)、业务中台(微服务能力)、业务前台;
服务分层:行业内还没有统一标准,有的分三到四层,有的没有分层;一种比较简单明细的分层方式为:可以分为两层,第一层是基础服务层(核心领域服务、公共服务、中间层服务)、聚合服务(适配服务、边界服务)
技术架构:基础设施、平台服务、支撑服务、业务服务层(微服务)、网关层、接入层;
服务发现机制:1.传统负载均衡,这种方式缺点是负载均衡是单点,有性能开销;2. 将负载均衡以进程方式集成到消费者内部,不存在负载均衡单点,但这种方式需要根据不同语言进行开发
API服务网关其主要作用包括:反向路由、安全认证、限流熔断、日志监控;目前开源的实现时Zuul,其包括前置路由过滤器(日志记录)、路由过滤器(寻找到对应的服务)、后置路由过滤器(日志记录)等,可以由用户自行定义过滤器(可插拔的方式)
Netflix路由发现: 包括API网关、服务注册中心、服务层等;
集中式配置中心: 管理员可以在配置中心修改配置,通过Push或Pull两种方式让服务获取变更的配置;
微服务通讯方式:1.RPC(紧耦合、消息协议是二进制、通讯协议是TCP、性能高、强类型客户端、典型框架包括Dubbo、Tars、Motan、对外开放需要转换成Rest) 2.Rest(松耦合、消息协议是文本、通讯协议是Http、性能一般、一般Http客户端,典型框架包括Srping MVC| Boot、可以直接对外开放);
微服务治理:通过微服务框架对多个内容进行统一管理;
微服务监控:基础设施监控、系统层监控、应用层监控、业务监控、端用户体验监控
微服务调用链监控:国内主流的是CAT;
限流熔断:主要的框架是hystrix;
Spring Boot框架中用于服务注册与发现的组件是:Eureka,包括Server与client端,Server端是注册中心,Server端帮助进行服务注册