什么是微服务啊?

2018-03-22 09:16:43 +08:00
 zjsxwc

看网上的描述看不懂,模棱两可的样子。谁来解释下什么是微服务?

5589 次点击
所在节点    程序员
32 条回复
znood
2018-03-22 09:27:04 +08:00
微服务是一种架构方法,将传统应用拆分成各个独立的模块(微服务)运行,并且模块间通过 Restful 或 rpc 方式通信,模块可单独部署、更新、重启等。
常用于容器化部署,Docker,Kubernetes。楼主也可了解下云原生。
zjsxwc
2018-03-22 09:33:25 +08:00
@znood

也就是说用了 rpc 的就是微服务。

rpc==微服务?
sundev
2018-03-22 09:36:10 +08:00
微服务就跟 Moto Z 手机的一个模块一样。
caixiexin
2018-03-22 09:37:20 +08:00
把业务模块尽量按照单职责划分,代码,依赖做到尽可能简单,能够快速部署快速摘除
坏处是模块会非常多,部署可能是灾难,所以出现了 devops 岗位。
caixiexin
2018-03-22 09:38:55 +08:00
可以理解成是分布式服务的一种演进
p2pCoder
2018-03-22 09:42:09 +08:00
大数据风控部门:
每个月都有新接入的数据源,需要实时处理
每个月也有新的模型建立用于风控
每个数据源又要处理后,对接入相应的 BI 或者学习模型
这种业务场景,就需要微服务
znood
2018-03-22 09:45:51 +08:00
@zjsxwc 不是,rpc 只是一种通信方式
paragon
2018-03-22 09:49:19 +08:00
等你用到的时候就知道了 ~
Mazexal
2018-03-22 10:00:50 +08:00
把之前大型系统里的功能单独抽出来, 就是微服务了
zjsxwc
2018-03-22 10:06:21 +08:00
@znood

那么最简单最常见的只是在程序进程内通过面相语言的类实例间相互调用业务类方法这种方式的架构, 而不用 rpc、restfull api 的通讯的能不能做微服务?
th00000
2018-03-22 10:11:08 +08:00
比如说你玩魔兽世界要打 20 人战场了, 主服务会将玩家数据打包丢给战场服务器的集群, 将玩家的登陆状态部分切换到战场服务器, 玩家就在战场服务集群上进行战斗, 战斗完毕之后集群返回战斗结果给主服务, 再将部分玩家登陆状态切换回来, 就可以理解为一个简单的微服务架构
th00000
2018-03-22 10:13:33 +08:00
又或者你要打怪之后, 怪物要进行掉落物品, 因为掉落模块的逻辑是所有的服务器共享的, 所以可以将掉落的服务单独拉出来进行集群, 当任何服务器要进行大怪掉落的时候, 将掉落分组, 掉落 id 等抛给掉落服务集群, 掉落服务会将掉落的物品 ID 列表返回给调用服务, 由主服务将掉落的物品加到你的背包里, 这也是微服务的架构
znood
2018-03-22 10:14:21 +08:00
@zjsxwc 肯定不是的,微服务是独立进程。
微服务没有官方的定义,只是社区催生出来的一个理念,你理解了就理解了不理解就再看看。关于具体的产品架构还是看设计。
zjsxwc
2018-03-22 10:17:46 +08:00
@th00000 #11

@znood #13


所以微服务就是由原来单进程(可以多子进程) 变成了 独立多进程 ?
whypool
2018-03-22 10:23:59 +08:00
部署是灾难,有时候不晓得哪个服务 gg 了,线上先报错了,然后排查重启
wweir
2018-03-22 10:30:12 +08:00
高内聚,低耦合
耦合低到一定程度就可以仅仅只用几个 rpc 调用来解决,这样按模块裁成组件。
结合调度服务,实现高度的可用性及资源的合理分配

说到底还是通过降低开发难度,来提高服务可靠性,同时降低硬件成本
moka20477
2018-03-22 10:39:09 +08:00
最简单的说就是从一开始就是大家的目标就是把服务无限的细化拆分,以让其保证最大的低耦合,但是一大堆服务的部署,监控,治理是个极其复杂的事情,近几年微服务火起来了是因为众多技术让微服务治理变成了可能,所以微服务没什么复杂的,就是服务细化拆分而已,真正大家讨论的都是“微服务治理”
lesxc
2018-03-22 10:42:13 +08:00
以淘宝购物为例(不考虑细节):
1. 访问首页时,A 服务来提供页面展示。A 服务只提页面的快速展示
2. 搜索商品时,B 服务来提供搜索的细节,同时向页面展示商品列表
3. 用户登录, C 服务提供用户登录,包括移动端、pc 端、淘宝账号、支付账户等
4. 支付环节, D 服务提供支付,支付成功后返回商家和用户信息。

以上只包括最简单的流程 ,还有物流、个性推荐、服务治理、业务监控等等各种后台服务。这些服务都布署在单独的服务器上通过 rpc 来调用来完成一次完整购物流程 。
asaxing
2018-03-22 11:01:23 +08:00
借楼问一下有什么开源的微服务项目吗
NoahNye
2018-03-22 12:06:47 +08:00
很想用现在 EA 的 dlc 比喻

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

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

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

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

© 2021 V2EX