什么是微服务spring
将复杂的业务系统根据业务拆分红多个子系统协同完成主体业务。数据结构
微服务的九大特性(根据Martin Fowler 在 Microservices 中的概括)负载均衡
服务组件化(灵活拆装,低耦合)框架
按业务组织团队(分工驱动团队的技术知识储备)微服务
作产品的态度,团队对整个生命周期负责,业务进行拆分后,每一个模块的的业务小而精,更容易作纵向扩展,把小功能作精组件化
智能端点和哑管道,组件间从原先的方法调用的交互方式变为基于粗粒度的通讯协议(Http的RESTful API,HSF,RabbitMQ)性能
去中心化管理,不须要再为整个项目(诸多子业务的组合)定义统一的标准,意味着每一个子模块要解决一些模块特有的问题能够灵活的引进一些技术,能够避免单体项目在总体的标准和框架限制下,一些技术没法引入,致使短板被放大,团队花大量的时间解决一些简单的问题(重复造轮子)测试
去中心化管理数据,数据结构更优,性能提高空间更大。设计
基础设施自动化,自动化测试、自动化部署日志
容错设计,微服务的项目分部和部署比单体服务更加的复杂(总体项目协同角度看),须要更强的容错机制,否则一个服务的问题蔓延(错误自动回复,日志分析、监控(很是重要),断路器)。
演进式设计,微服务的设计成本比较高,对团队来讲要服务处更大的代价,不成熟的团队能够先以单体系统进行开发部署和实施,在后续业务扩展的过程当中,再慢慢将一些模块进行抽离,围绕着住业务进行微服务改造。
微服务带来的问题
事务,最终一致性(从新发起调用,日志分析,结果分析)
容错,日志分析、监控
微服务解决方案
spring cloud
注册中心 Eureka Server
服务管理,一个双层map管理注册过来的服务 Mao<ServerName,Map<InstanceName,Instance>>.
注册功能
注销功能
按时剔除无意跳的服务
剔除无效服务功能(一些服务虽然有心跳,但没法提供正常服务,经过调用spring boot整合的health监控端点实现)
获取服务列表功能
刷新心跳接口
注册客户端 Eureka Client
服务治理的客户端,集成到每一个业务系统中,将业务系统提供的服务注册到注册中心。
调用注册接口进行注册,维护心跳(定时任务)
调用注销接口进行注销(服务正常关闭或重启)
获取服务列表(定时任务)
负载均衡 Ribbon
对获取到的服务列表进行轮询选择(或者配置其余负载均衡方式)
spring http
发起调用