微服务是不是模块化?对微服务应该怎样理解

2018-07-13 18:27:04 +08:00
 zhazi
公司开个视频站项目,我从规划到实施,最近微服务火的一塌糊涂,考虑使用微服务实现,现在接口写的差不多的,思考的时候再考虑一个问题,是不是把微服务理解错了
我说一下我现在的半成品模式:
1、多媒体服务(视频信息)
2、权限服务(权限信息,RBAC )
3、项目本身(业务信息、如各种活动,购买等实现,视频状态控制)

项目本身充当一个 context 承上启下的作用,也是具体业务实现,如拉客户免费观看视频,购买视频,是否能查看免费视频然后调用视频库返回视频资源

这样设计考虑到公司其他项目也可以复用多媒体模块,业务在自己项目里实现,然后再调用视频服务资源
权限也是这样考虑的

但这样设计是不是背离微服务的模式了,有没有朋友对微服务理解比较深刻给讲一讲
3789 次点击
所在节点    设计
4 条回复
GoPython
2018-07-14 06:09:08 +08:00
我来说下,我做过的吧。
并不仅仅是模块化,应该说更重要是可以不再单机部署,可以容器部署到多台机器,分布式协调运行(我们一般用 RPC 内部调用)。
不仅仅是业务代码可以拆分,数据库也可以拆分,然后分别部署到不同的机器,解决单机性能不足的问题。

然后说的,权限服务,其他各种服务的互相调用,这个用 RPCI 互相调用不是问题。
artandlol
2018-07-14 08:20:27 +08:00
部署下 fabric8 就能理解了
karllynn
2018-07-16 21:19:52 +08:00
微服务是为了应对大规模软件系统的…模块化在单体应用里也能实现

微服务会引入很多新的问题,最典型的就是事务问题,分布式事务代价太大。

不要为了微服务而微服务。
zhazi
2018-07-20 01:29:49 +08:00
这两天学习了一下相关领域的知识,说一下自己新的理解,微服务以充血模型和事物驱动为实现,以 ddd 思想为设计理念,ddd 的设计思想重点是领域的划分,bc 的规划。
微服务跟大规模小规模没啥太大关系。
我觉得微服务的特点是高度自制,目的是去中心化,提高可扩展性,可靠性。
和模块化的概念出发点不太一样,模块化是为了提高可复用性。
顺便推荐一本书《领域驱动设计》。对软件开发设计的思想很涨见识。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/470697

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX