1
v2vTZ 2022-11-18 01:44:37 +08:00 via Android
微服务包括服务间的调度和熔断,按照你的描述我觉得你单独搞个服务 HTTP 访问是最方便的,由内部业务变成网络请求
|
2
xuanbg 2022-11-18 08:14:35 +08:00
微服务肯定比巨石要容易维护,但你这个问题和微服务没关系。异步方法就用异步的交互方式好了,至于把他们都硬捏到一块么?譬如你举的这几个例子,都可以前端轮询的方式去查结果啊。
反正我导出 Excel 就是这样处理,服务端导出后上传文件到 OSS ,然后把文件的 url 写到数据库里面。前端查到 url ,就显示下载按钮。你看,这不是很简单? |
3
hamsterbase 2022-11-18 08:52:00 +08:00 via iPhone
这种其实适合 serverless ,在 serverless 实现具体的业务逻辑。
|
4
chenPiMeiHaoChi 2022-11-18 08:57:33 +08:00
没啥不合适,springcloud 就是用的 http 。
看你的描述应该不是什么大并发的需求,单独拆成 springboot 跑也没啥问题啊。 |
5
darkengine 2022-11-18 08:57:59 +08:00
上微服务是杀鸡用牛刀了,另外起一个用胶水语言写的提供发送短信、生成 excel 、PDF 等服务功能的服务,通过消息队列调用就好了。
|
6
Aaronsunny 2022-11-18 09:05:15 +08:00
直接起各公共服务,http 调用就好了
|
7
swulling 2022-11-18 09:12:28 +08:00 via iPhone
为啥要拆服务,是 Java 不支持多线程了么?
就拆出一个单独的模块,然后 api 设计为异步,搞个线程池不就完了。 坚决反对拆无必要模块的想法。 |
8
swulling 2022-11-18 09:13:27 +08:00 via iPhone
坚决拥护单体应用 @
|
9
Akitora 2022-11-18 09:17:52 +08:00
CompletableFuture
|
10
chendy 2022-11-18 09:19:18 +08:00
单独拉个模块,集中管理队列、线程池就够了
除非有成熟团队,否则坚决反对拆项目 |
11
coderxy 2022-11-18 09:19:48 +08:00
你这个需求,搞个异步任务就行了
|
12
wqhui 2022-11-18 09:28:45 +08:00
微服务通讯本质也是互相发请求,http 虽然不是针对微服务这场景做的协议,但一般也够用了,如果并发特别大才要用 rpc ,太菜了还没遇到过瓶颈是因为通讯协议
|
14
litchinn 2022-11-18 09:50:26 +08:00 1
从描述上看
> 会部署在同一个服务器上面 这说明应用没有性能压力,只是由于异步且耗时较大所以想拆分。而微服务并不解决这个问题。 > 大而全,所有业务功能都放在里面。 这里我觉得想法应该是觉得这块异步的功能比较独立,想拆分出来让代码更好管理一点。这个没问题,但是像楼上说的代码层面单独拆出一个模块就好了。 综上,从你的描述上看应该是不必拆分的。 什么情况应该拆分了呢? ( ps: 将“生成 Excel 、PDF 这个块”简称模块 A ) 1. 模块 A 很占资源,长期占用大量内存、cpu ,以至于影响本来的业务。 2. 模块 A 速度太慢,想并发执行,需要启动多个实例跑。 拆分之后如何调用呢? 1. 整体换成微服务架构,微服务提供完整的服务间调用、路由、限流等功能。 2. 使用 mq 通讯即可。 |
15
justRua 2022-11-18 10:11:19 +08:00
要明白服务切分的意义。例如隔离影响、方便服务扩展和加机器。
|
16
justRua 2022-11-18 10:15:22 +08:00
如果流量不大属实没什么必要切分,分开后你要多处理各种异常情况,后续如果有新增什么复杂功能你可以提议新增一个服务避免影响旧服务。
|
17
NizumaEiji 2022-11-18 10:55:43 +08:00
自己搞个线程池 异步跑一下就行
当然有时间折腾分拆一个服务也可以 |
18
jeesk 2022-11-18 10:57:14 +08:00
RSocket Broker
|
19
liujavamail 2022-11-18 11:10:48 +08:00
问个问题, 如果把项目拆分成多个功能独立的子服务,子服务可以独立部署,服务之间通过 http 或者 rpc 相互调用,没有 api 网关,没有服务注册与发现,只是单纯的拆分成多个服务,这样可以叫微服务吗?
|
20
wolfie 2022-11-18 11:14:17 +08:00
通讯方式 MQ 、Redis 、数据库 都行。
异步任务类的,不建议直接请求。 |
21
312ybj22 2022-11-18 16:29:18 +08:00
能拆就拆,早期拆分成本还会低点,不然一台服务挂了,全都 jgg , 通信的话,Http 或者 Mq 都行
|
22
andreby 2022-11-18 17:28:07 +08:00
+1
|
23
leoskey 2022-11-18 17:43:08 +08:00
如果是生成 excel 、pdf 台占用服务器资源,可以拆分到单独服务
如果是仅处理时间过长,应将业务使用后台任务处理 |
24
Pony69 2022-11-22 16:06:10 +08:00
没必要拆成微服务,直接内部 http 请求或者弄个线程池执行异步。
|
25
LDa 2022-11-23 10:00:53 +08:00
上微服务的话 你的下个问题将是 《如何将微服务项目快速融合成单体项目》
|