基于云的应用的特点
- 拥有庞大而多样化的用户群:微服务允许功能快速交付(每个服务范围很小,并通过一个定义明确的接口访问)
- 极高的运行时间要求:基于微服务的应用程序可以将故障和问题隔离在应用程序的特定部分中
- 不均匀的容量需求
微服务的服务接口设计原则
- REST理念:将HTTP作为服务调用协议,并使用标准HTTP动词,围绕这些动词对基本行为建模。
- URI传递意图:URI作为服务端点,描述问题域的不同资源。
- 请求和响应使用JSON
- 使用HTTP状态码传达结果
微服务构建原则
- 微服务应该是独立的和可部署的
- 微服务应该是可配置的。服务实例启动时,应该从中央位置读取配置,或者用环境变量传递配置
- 微服务实例需要对客户端是透明的。客户端不应该知道服务确切位置,而应该与服务发现代理通信。
- 微服务应该传达他的健康信息。
微服务的运维需求
服务装配:如何打包和部署服务来保证可重复性和一致性
服务引导:如何将配置代码与运行时代码分开,以便快速启动和部署
1)需要有配置存储库,应该能够对所有配置更改版本化,并审计跟踪配置数据的最后更改。
2)发生在微服务首次启动并需要加载其应用程序配置信息时。
3)如果配置发生变化,需要重新读取配置信息。服务注册/发现:如何让新的服务实例被发现
1)微服务实例启动时,向第三方代理进行注册自己,告诉物理IP或域名地址,以及逻辑名称
2)客户端与发现代理进行通信来查找服务的位置服务监控:如何监控微服务实例,并确保绕过微服务的故障。