想使用微服务框架来构建项目,如何操作呢?

2018-03-22 00:28:07 +08:00
 MrMike

最近在考虑将项目拆分成一个个小模块,运行在 docker 里面,每个模块之间用 restful 的方式来通信,所以在考虑使用微服务的框架。

目前的项目主要用 php 开发的,前两天了解了下 sprin cloud,看到一篇文章说是只能运行 java 的项目,所以就没继续了。

对微服务了解不深,所以请问下有这方面经验的朋友,该如何选择呢?

7062 次点击
所在节点    PHP
66 条回复
1762628386
2018-03-22 00:40:30 +08:00
慢死吧
1762628386
2018-03-22 00:41:12 +08:00
http 接口很慢的
gdtv
2018-03-22 00:44:56 +08:00
@1762628386 可有解决办法或者更好的建议?
Luckyray
2018-03-22 00:48:58 +08:00
spring cloud 的好处是有很多现成的工具让你使用,你可以看看它包含了哪些组件,如果你的系统不是很复杂庞大的话,可能有些工具是用不到的,完全可以手动撸一套 PHP 简单版出来。

微服务说白了就是拆分,但是可能本来业务就复杂,再拆一拆可能导致有几百个服务,成千上万个实例在跑,所以日志怎么收集,配置怎么统一更新,负载均衡怎么搞,服务提供方怎么找到服务使用方,需不需要熔断、升降级,一大票微服务的 api 怎么结合成统一的对外 api 等等。
MrMike
2018-03-22 00:49:13 +08:00
@1762628386 那用什么快些?所有模块都放在一起?单一应用。
MrMike
2018-03-22 00:51:32 +08:00
@Luckyray 恩。也考虑过自己撸,如果有现成的解决方案,更好,应该可以省点时间,也应该比我们自己撸考虑的更周全些。
Luckyray
2018-03-22 00:54:34 +08:00
@MrMike 这么一说的确没听过有现成的 PHP 框架……一提微服务就自动想 Java 了,不如换 Java ?😂
Immortal
2018-03-22 00:55:31 +08:00
不知道楼主项目如何 之前也学习了很多关于微服务的知识 但是思前想后 自己手头项目还是没必要上微服务
还是老话 在考虑怎么用之前,还是先想想想是否真的需要 除了说出去比较时髦 还得考虑之后的维护成本 就像 4l Luckyray 说的 上了微服务 就得考虑很多东西了 如果对于项目帮助不是很大 真不如不上
MrMike
2018-03-22 00:56:07 +08:00
@Luckyray java。。哈哈,没精力也没时间去撸它了。
orangeade
2018-03-22 00:58:02 +08:00
可以考虑 RPC 通信或者消息队列啥的,微服务之间全用 HTTP+Restful 也没必要吧
orangeade
2018-03-22 00:58:47 +08:00
微服务有个好处就是解放语言选择的,不同微服务可以用不同的编程语言
Immortal
2018-03-22 00:59:10 +08:00
而且个人觉得 http 没有想象中的慢 服务之间调用 前期用 http 完全没问题的
MrMike
2018-03-22 01:00:32 +08:00
@Immortal 只因为目前手上项目的原因想拆分,所以就想到了用微服务。现在的项目里面,也分了很多模块,每个模块之间的关联性很强,有时候修改一个 bug 可能会带出其他的问题,当然也跟程序员的技术水平有关系。所以想把各个模块独立出来,形成一个独立的应用,这样的话,模块出问题了,不至于影响整个项目的运行。
Immortal
2018-03-22 01:05:38 +08:00
@MrMike
从你的描述来看 感觉不是微服务不微服务的问题 是业务逻辑拆分不够干净
光讨论微服务 因为我自己也写 php 和 golang,微服务这块看的一直是 golang 方面的,php 我用 yaf 最多,通讯我一下子说的话就知道 yar 和 hprosed
MrMike
2018-03-22 01:05:46 +08:00
@orangeade 各个应用之间如何通信,这个没决定,RPC 和 RESTFULL 比较,RESTFULL 要熟悉些。目前比较迷茫使用哪些软件来搭建项目框架。zookeeper 用来注册和发现,docker 用来运行各个模块,目前是这样考虑的,因为不了解 zookeeper,所以担心研究了半天,最后像了解 spring cloud 一样,只适合 java 的项目就浪费时间了。
Immortal
2018-03-22 01:07:18 +08:00
@MrMike 光服务发现 除了 zookeeper 还有 etcd 和 consul
MrMike
2018-03-22 01:10:47 +08:00
@Immortal 业务逻辑上是有点问题,项目的基础架构已经确定了,也开发了一段时间了,需求变化了,所以有时候为了赶时间,就没有那么严谨,导致现在业务逻辑比较乱,要是想去理顺,可能要花很多时间,所以就考虑把每一个模块拆分出来,然后逐步重构每一个模块,这样也不至于影响整个项目的运行了。
MrMike
2018-03-22 01:11:32 +08:00
@Immortal 恩,在网上查的 zookeeper 推荐的比较多些。
artandlol
2018-03-22 07:14:44 +08:00
回复都是 etcd 这么底层的? 当然是 Fabric8,集成 k8s 和 Jenkins 的一个框架
sagaxu
2018-03-22 07:41:04 +08:00
@1762628386 手上有个日均 5 亿次调用的 http 接口,单就协议开销而言,单机 100 亿次调用也吃得消,http 性能是比不过二进制协议,也不至于慢死吧。
@MrMike 可以看看 swoole 和 swoole 之上的一些方案

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

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

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

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

© 2021 V2EX