企业基础架构浅析
Emac
2015/8
架构演变过程
来源:http://dubbo.io/dubbo-architecture-roadmap.jpg-version=1&modificationDate=1331143666000.jpg
第一阶段:ORM
特点:
- All-in-one
适用场景:
- 业务逻辑:简单
- 日均PV:<1000
主流框架
- Hibernate
- Apache OpenJPA
- MyBatis
第二阶段:MVC
-- 关注开发效率
特点:
- 纵向切分+横向扩展
适用场景:
- 业务逻辑:一般
- 日均PV:1000~10w
主流框架
- Spring MVC
- Struts
- Play
新兴框架
- Spark
- Ninja
- JFinal
第三阶段:RPC
-- 关注业务可复用性
特点:
- 表现层业务层分离
适用场景:
- 业务逻辑:复杂
- 日均PV:1w~100w
什么是RPC?
RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的,本质上编写的调用代码基本相同。
RPC v.s HTTP API
核心:传输协议和序列化方式
- 内网:TCP + Binary (Java, Hession, Thrift, Protobuf...)
- 外网:HTTP + Text (JSON, XML, YAML...)
主流框架
- RMI (TCP + Java)
- Apache Thrift (TCP + Thrift)
- Caucho Hessian (HTTP + Hessian)
第四阶段:SOA
-- 关注资源利用率
特点:
- 服务治理+资源调度
适用场景:
- 业务逻辑:复杂
- 日均PV:>100w
什么是SOA?
面向服务的体系结构是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以使用一种统一和通用的方式进行交互。
SOA是一种软件架构思想,不是一种具体的技术或架构。
典型特征
- 松耦合性
- 位置透明性
- 协议无关性
- 性能
- 可升级性
- 可靠性
- 可用性
- 可扩展性
- 可维护性
- 可管理性
- 安全性
QoS需求
服务的设计原则
- 原则1:粗粒度契约
- 原则2:无状态性
- 原则3:通用契约
- 原则4:消除冗余数据
-
开源实现
- Twitter Finagle
- Alibaba Dubbo
- Apache CXF
Dubbo简介
by 阿里巴巴
一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
基础模型
架构总览
配置方式
- 属性配置
- XML配置
- 注解配置
- API配置
协议支持
注册中心
- Zookeeper
- Multicast
- Redis
- Simple
服务治理
示例:集群容错
Demo-1: Spring MVC + Dubbo
Demo-2: Spring Boot + Dubbo
Dubbo eXtension
by 当当
主要扩展:
- 支持REST风格远程调用(HTTP + JSON/XML)
- 支持基于Kryo和FST的Java高效序列化实现
- 支持基于Jackson的JSON序列化
- 支持基于嵌入式Tomcat的HTTP remoting体系
Demo-3: Dubbox
参考资源
- http://dubbo.io/
- http://dangdangdotcom.github.io/dubbox/
- http://www.infoq.com/cn/articles/micro-soa-1
- http://www.infoq.com/cn/articles/micro-soa-2
- http://www.ibm.com/developerworks/cn/webservices/ws-arcsoa1/
- http://www.ibm.com/developerworks/cn/webservices/ws-arcsoa2/
企业基础架构浅析
By Emacoo Shen