两三个人对项目进行开发(每个人负责几个模块,并且单独部署服务),有以下几个问题:
1.有必要将接口的鉴权、用户认证抽成一个公共的服务,或者说有没有更好的方法?
2.有必要上网关、服务注册中心、监控等微服务的组件吗?
3.如果让开发人员只关注业务,那需要哪些基础设施?是不是必须要上微服务?
1
wizzer 2020-12-23 15:20:14 +08:00
|
2
securityCoding 2020-12-23 16:10:23 +08:00
1. 有必要 . 接口鉴权,账户认证必须解耦出来
2. 没必要 ,先按模块分 3. ci |
3
MeloForsaken OP @securityCoding 不上网关的话怎么转发请求到鉴权认证服务,认证通过后又怎么转发到业务的服务上?
|
4
rapperx2 2020-12-23 16:19:24 +08:00
看项目流量来啊,小流量上微服务有什么用,加大成本。不过也要看业务需求来
|
5
micean 2020-12-23 16:21:09 +08:00
两三个人的项目做成单体就行了,上什么微服务
|
6
iceneet 2020-12-23 16:26:26 +08:00
不是所有项目的都要上微服务的 项目小的话 微服务带来的问题可能会更多
|
7
shakeyo 2020-12-23 16:31:15 +08:00
单体的问题在于无法复用,特别是在某些数据和代码都需要公用的情况下
我现在的做法是提取出需要共享的服务,然后由单体应用进行 rpc 调用 |
8
MeloForsaken OP @micean 你的意思是代码合并成一个服务打包部署?
|
9
chendy 2020-12-23 16:49:24 +08:00
项目多大?不大的话直接分模块写一个项目里完事了
|
10
securityCoding 2020-12-23 16:53:24 +08:00 1
@MeloForsaken 解耦方式不一定非要做成跨进程 , 规模不大的时候做到模块解耦就够了,比如统一的拦截器 /过滤器,给业务层提供统一获取登录态上下文 api ,结合缓存来做性能是没有啥问题的. 业务层对鉴权和登录态校验是没有感知的.同个进程内也就不存在转发请求的概念了. 俗称客户端模式
要上业务层网关,其实差别也不是很大 ,无非是将鉴权的代码功独立成服务,网关层面做前置认证再自动帮你做转发和传递上下文 . 技术方案都是慢慢演进的,没有完美的方案 . 结合业务场景来分析业务 ,选个最简单的方案来做就好. |