文章目录
terminology | description | memo |
---|---|---|
SaaS | Software as a Service | 给客户提供网络服务程序:使客户可以通过瘦客户端直接显示界面,比如在线的’Google Docs’. 面向普通大众. |
PaaS | Platform | 给客户的程序提供运行环境,包括:网络、服务器硬件、操作系统、存储等.客户可以自由控制自己的程序和托管环境. 面向软件开发者. |
IaaS | Infrastructure | OpenStack、AmazonEC2 |
ESB | Enterprise Service Bus | |
SOA | Service Oriented Architecture |
Distributed
- 分布式是为了去中心化, 降低服务程序之间的耦合. – 合久必分
- 它是一个按业务拆分成独立的进程, 分布在不同的地方, 每个构成一个节点, 节点间通过网络沟通. 其中每个node都可以单独做集群.
- 为了规范统一及扩展性,一般服务器之间的通讯使用RESTful标准. 服务器一般是无状态的(可使用Redis共享). 对外服务的service一般叫Gateway!
Cluster
其对外表现通常为一个服务器. – 分久必合
负载均衡集群(LBC)
Load Balance Cluster
利用一个集群中的多台机器完成许多并行的小任务!用于减轻单个服务器的压力!
DNS: 一个域名对应多个均衡IP.通常作为一级负载均衡服务器.下接二级负载均衡.控制权再域名商哪里,可配置性低! 反向代理:工作在HTTP层,效率不高
高可用性集群(HAC)
High Availability Cluster
通过集群中的slave节点来保证集群中服务的可靠性. 通常与负载均衡策略混合使用.
高性能集群(HPC)
High Performance Cluster
利用一个集群中的多台机器共同完成同一个大型计算任务.弥补的单机性能不足;参考Hadoop的Map/Reduce模型 可理解为并行的主机!
MicroService
简单来说就是: 各个业务组件通过RESTful沟通(不受语言限制的API),对外服务由APIGateway把关
注意: 微服务也按业务逻辑划分各个组件,但业务逻辑与数据放在一起,以便尽量做到独立、降低服务间的耦合性!
- definition
- 将单体服务划分(按业务能力)成一组小服务,服务之间互相协作(通常是HTTP/json)实现业务功能 — 强模块化,可独立部署
- 很少有集中式的服务管理,服务开发语言、使用的存储技术都可以不同 — 技术多样性
- disadvantage
- 分布式系统的复杂性
- 最终一致性
- 运维复杂性
- 测试复杂性
设计原则
- 同一类型的服务共用一个数据库实例,不同类型的服务划分不同的实例.保证服务与其数据的独立性.
- 服务要尽量做到无状态化,这要求每个服务的实例其内存都不应保存状态数据,公共的状态应该放到redis中!
常用架构