互联网产品的要求:高可用性,高性能,可伸缩,可扩展和安全性的非功能质量
相对于传统的企业级技术来说,面向的人群不一样,结构也就不一样。
如果互联网产品也像企业软件那样,就好比整个中国的人都到北京的一个办事处来办事,这个办事处可能无比庞大,但是却不能很好的服务到各个地方的人。
所以互联网技术以拆分为原则来满足服务于海量用户的需求。
产品的演化过程
- 传统单体架构 lamp
特点:单体化,所有的组件都耦合在一个开发项目中,并且配置在一个jvm进程中。颗粒度太粗。无法实现单个模块的上线工作。
JEE架构
SSH架构 springmvc - SOA服务化架构
特点:将模块化组件从单一进程中进一步拆分,形成独立的对外提供服务的网络化组件,通过某种网络协议对外提供服务。
web service
esb企业总线 - 微服务
问题是驱动人类进步的原动力
soa的服务化架构仍然存在问题,所以才会进一步演化成微服务的架构。
webservice
依赖中心化服务化发现机制
使用soap通信协议(基于xml的协议交换消息)来序列化通信数据,xml格式数据冗余,协议太重
服务化管理和治理设施并不完善
esb
组合在esb上的服务可能是一个过重的整体服务,或是传统的jee服务。
esb视图通过总线来隐藏系统内部的复杂性,但是系统内部的复杂性仍然存在。
总线本身的中心化的管理模型,系统变更影响的范围随之扩大。
微服务的特点:多个可独立开发,可配置,可运行和可维护的子服务,子服务之间通过良好的接口定义通信机制。