微服务架构
应用场景
1、单体应用
优势:
开发简单、性能高(同一进程的调用)、部署简单
缺点:
部署的时候:把单个应用全部打成一个war包部署在tomcat上带来问题
并发量大:解决方式升级服务器,或者布置10个服务器
可靠性:一个模块出现问题,整个程序瘫痪
中心化:全部功能只能用一种语言写,有些功能java写好,有些c++写好
新架构:中心化带来的问题
持续交付:改变一个模块,整个应用升级
2、微服务解决问题
微服务解决的问题是进程间的调用
HTTP方式实现进程间的通信
每个服务都有自己的数据
3、三维扩展耐性模型
y轴:一个服务的多模块划分
x轴:一个的模块的多个复制,多个tomcat实现
z轴:数据分区
4、微服务特性
组件化、多服务:组件,一个可独立部署升级的模块
以业务功能组织团队:一个功能有个全栈(页面、中间件、数据库)的开发团队
做产品不是做项目:产品,生命周期是从开发到运营维护
智能端点、哑管道:SOA:面向服务的架构,指导服务如何架构,ESB:企业级服务总线,缺点:重量级,维护难。智能端点,一个服务模块;哑管道,轻量级的通信。
去中心化管理技术:每一个服务选用最好用的技术
去中心话管理数据:每一个服务用自己的数据库
基础设施自动化:实现持续集成、持续交付、持续部署
容错设计:CAP:Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。
演进式设计
Iass:基础设施:买一个服务器。
PAAS:Platform-as-a-Service:平台即服务,把应用服务的运行和开发环境作为一种服务提供的商业模式。买一个服务器,装了tomcat、mysql
Saas:软件,开源软件