- 论坛徽章:
- 42
|
本帖最后由 laputa73 于 2019-08-05 13:43 编辑
这个话题比较热门,
1.微服务的定义?微服务需要“微”到什么程度?
这个问题其实是微服务最核心的问题。
微服务其实并没有明确的定义,相对于单体应用,微服务有明显的差异。
但是相对于分布式的多服务体系,微服务的差异体现在哪里?
传统的SOA同样有服务注册、服务网关、服务路由。
微服务虽然可以脱离网关,只通过注册中心寻址,p2p调用,但是最佳的推荐应用方式仍然是通过网关。
所以,微服务更多是一个理念,而不是一个明确的概念。
微服务是不是越微越好?
答案我认为是否定的。
一个上百个api的系统,通过上百个服务来实现,会给运维来来无穷无尽的烦恼。
相反,类似的功能,聚合到一个服务中集中实现,效率更高。总体分为10来个服务可能就足够,
从单体到分布式集群是一个质的变化,但是从分布式到微服务,只是一个量的调整。
2.微服务的重大优势是什么?它是未来吗?
微服务最大的优势是统一了分布式RPC接口,让进程间通信和服务通信成为了统一模式,
只要分布式调用的需求存在,微服务的思想就在。
相对于传统的单体系统,微服务主要的革命是去掉了session,强制api无状态.
3.微服务在实践过程中最大的难点是什么?
粒度拆分的决策。
服务之间数据一致性问题。
运维问题。
多语言问题。
还有一个内外划分的问题,传统的系统功能明确,内部系统走rpc,外部系统通过soa相互通信。现在都统一成微服务了。
谁是内,谁是外?系统边界在哪?服务中心需要建一套,还是多套?
4.微服务、容器技术两者的关系?两者结合带来什么新趋势?
没有容器(docker),也会有微服务。各种语言都有自己的web/rest app容器。
例如java的spring boot, python的flask.
但是有了docker容器,微服务的隔离更彻底,部署更清晰。
而且,依托k8s的容器调度,可以实现更高层次的微服务治理。
5.怎么处理微服务与外部相连,以及获取数据?
微服务的数据同步是个很复杂的问题。
理论上微服务之间只存在api调用. 但是每个微服务自己搞一个数据库是不现实的。
所以系统中需要有一部分服务,单独处理数据。成为数据服务。
然后通过这些服务,暴露数据操作接口。
对于这些数据服务,可以直接操作数据库,本质上和传统的服务/DAO这些没有太大差别。
微服务区分内外,和外部服务交互一定要过网关。
如果从外部获取数据,量小的走api,量大的可能走专用通道,例如文件,队列。
6.微服务与容器结合会发展出新趋势--Cloud Native,什么是Cloud Native?(可选答)
云原生的概念是相对于直接把老系统迁移到容器、虚机部署而言的。
实际上,只要用上了docker+微服务这一套体系。支持了集群扩缩容,自然就是云原生了。
多说一句,目前的的微服务架构,spring cloud还是主流
但是和云原生结合,service mesh(istio)才是更纯粹的微服务架构。
|
评分
-
查看全部评分
|