题记:
不要为了用某项技术而用,先找到用它的理由。
微服务挺热门,在有些场合下好像如果一个程序员不知道微服务,会很low。其实不然。
先看几个概念。、
集群:相同应用部署在不同的机器上。
分布式:将相同的应用拆分,在不同的机器上部署不同的应用。同时里面也有双机应用集群保证一定高可用
微服务:将服务更小化拆分(即按业务拆分,比分布式更细化)。
由此
我们可以看到微服务在开发层面,运维层面都会有一些改变。主要表现在:
1、服务多了,如何部署。
2、服务多了,如何调用。
3、服务多了,如何记录日志。
等等。
有如下前提认识:
a.网络是不可靠的。b.一个容器或虚拟机应该只运行一个服务。
基于以上一些前提:
一个微服务系统需要实现如下一些或者功能:
a.A服务调用B服务通过http协议,必须要有调度重试B服务的任意一台机器。即客户端负载。
b.由UAT(预生产环境)到生成环境的尽可能少的代码改变。即配置文件的中心化管理。自动化更新配置。
c.路由或网关的作用。
d.路由拓扑图。即每一个请求到转变为response返回的整个生命路径。目的:方便开发、调试。
e.集群服务状态检查。自动踢掉不能访问的接口。
f.最好还有自动化重载代码。
spring cloud 的相应组件包括ribbon,config-server,zureka都是为了完成服务”治理“而编写的spring-boot技术基础的代码。