现在很多人都在说微服务,老板想做这方面的,但是了解过后发现还有个传统的和微服务的区别,想具体了解下,有能解惑的吗
我觉得 小公司,小团队,还是别搞这些了。
ESB,SOA,微服务,这些东西,都是那些大公司,大的技术团体用来吹牛逼用的。
如果一个技术型的公司,技术团队的人数达到几十人了,可以采用ESB的理念来进行后续的集成开发;达到几百人可以采用SOA和微服务的理念。
ESB(企业服务总线)强调的是一个集成概念,将企业用到的所有功能都集成到一起。
比如:
- 考勤,办公流程,系统公告这三个系统独立开发,都有自己的账户管理,
采用ESB之后,就会有一个员工的账户中心,完成单点登录,方便用户使用。 - 企业内的所有服务都可以通过ESB进行联动,如果行政那边一个员工离职了,OA开启流程,通过ESB,财务可以结账,考勤可以锁定账户,门禁失效,Wifi无法入网。
- 当然,对于互联网类型的公司,ESB的一部分功能是对外开放的,大多是为了方便运维。
谈谈我的理解:
- ESB的主要还是用来针对企业内部,那时候互联网企业很少,也很少提架构理念什么的。还是大型企业内部的系统软件需要架构理念。
- 后来互联网公司兴起,出现了事业部和子公司,觉得对外提供服务需要一个架构理念了,就提出了SOA(面向服务的架构),每个服务都单独运维,具备各自的伸缩性,开发的时候,把思想搞清楚,我们是为了提供服务而开发的,比如某个游戏,如果服务的利润价值不大,那就下线,不影响其他服务。
- 微服务是在SOA基础上发展出来的一种理念,就是说,每一个功能都具备一定的服务能力提供给外部,但是,每个微服务又在一个容器或者说基础功能平台中生存。因为SOA中有些服务必须存在但又不直接创造价值,比如账户中心,消息队列等。
微服务需要一个具备规模的运维团队,而且,主要是互联网公司才使用微服务。
- 首先,你要搭建一些基础服务,比如:负载均衡,账户管理,消息队列,RPC,部署发布,代码管理,测试,缓存,数据仓库,监控,日志分析等等,这些都是分布式的服务,具备伸缩性。
- 有了这些基础服务之后,才是微服务的开发,企业每需要一个服务提供给用户,就立项开发一个微服务进去,由于基础服务已经搭建,新的微服务直接使用基础服务就行,不必重复造轮子。
- 运维团队集中所有服务,每个微服务是运维和开发共同维护,但是,主要还是运维在保障。
- 由于所有的微服务都是分布式的,具有伸缩性,所以,在用户爆发性增长和减少时,可以动态调节和优化,其中,自动化运维要自主研发,现有的软件系统太扯了。