terminologydescriptionmemo
SaaSSoftware as a Service给客户提供网络服务程序:使客户可以通过瘦客户端直接显示界面,比如在线的’Google Docs’. 面向普通大众.
PaaSPlatform给客户的程序提供运行环境,包括:网络、服务器硬件、操作系统、存储等.客户可以自由控制自己的程序和托管环境. 面向软件开发者.
IaaSInfrastructureOpenStack、AmazonEC2
ESBEnterprise Service Bus
SOAService 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
    • 分布式系统的复杂性
    • 最终一致性
    • 运维复杂性
    • 测试复杂性

ms

设计原则

  • 同一类型的服务共用一个数据库实例,不同类型的服务划分不同的实例.保证服务与其数据的独立性.
  • 服务要尽量做到无状态化,这要求每个服务的实例其内存都不应保存状态数据,公共的状态应该放到redis中!

常用架构

infrastructure billing