-
Notifications
You must be signed in to change notification settings - Fork 589
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
引入go-mir重构paopao-ce的接入层与业务逻辑层 #196
Conversation
审核、尝鲜、优化... git clone https://github.com/rocboss/paopao-ce
cd paopao-ce
git checkout -f feature/mir
cp config.yaml.sample config.yaml
# edit config.yaml to custom paopao-ce runtime configure
# you can just add `Service` `Deprecated` sub-suites features to Features section to start all sub-service in a single paopao-ce instance
make run TAGS='embed go_json'
____ __ __ ____ __ __
( _ \ / _\ / \( _ \ / _\ / \
) __// \( O )) __// \( O )
(__) \_/\_/ \__/(__) \_/\_/ \__/
paopao v0.1.2 (build:5aa3074 2023-01-01 16:28:06)
starting run service...
[email protected] [start] - listen on http://0.0.0.0:8014
[email protected] [start] - listen on http://0.0.0.0:8010
[email protected] [start] - listen on http://0.0.0.0:8020
[email protected] [start] - listen on http://0.0.0.0:8011
[email protected] [start] - listen on http://0.0.0.0:8012
[email protected] [start] - listen on http://0.0.0.0:8008
[email protected] [start] - listen on http://0.0.0.0:8006
[email protected] [start] - listen on http://0.0.0.0:8016
[email protected] [start] - listen on http://0.0.0.0:8018
`` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
整体看了下结构,没啥问题,设计思路挺好的,开发和迭代频率也很高👍🏻。
后续features迭代完成后,可以合入主干以2.0系列发布。
有两个建议可以参考下:
- 目前整合的各类服务较多,配置项有些繁杂,建议拆分为多个配置文件,大部分配置提供默认项即可,方便一些小白用户快速配置上手。
- 多服务按照端口进行了拆分,目前占用了8个端口,有个场景可能需要考虑下,比如:有些宿主机混部多种其他服务实例,整体只对外开放部分端口如8000-9000,单实例限制最多分配3个端口,考虑端口也是比较紧俏的资源,建议可以按照 http api、rpc 切分端口,同类型的服务按path区分。
这个是有考虑的,其实目前已经提供了按需添加配置的机制,paopao-ce在 # file: config.yaml
Features:
Default: ["Sqlite3", "Zinc", "LocalOSS", "BigCacheIndex", "Web"]
WebServer: # Web服务
HttpIp: 0.0.0.0
HttpPort: 8010
ReadTimeout: 60
WriteTimeout: 60
LocalOSS: # 本地文件OSS存储配置
SavePath: data/paopao-ce/oss
Secure: True
Bucket: paopao
Domain: api.paopao.info
Zinc: # Zinc搜索配置
Host: 127.0.0.1:4080
Index: paopao-data
User: admin
Password: admin
Secure: False 部署paopao-ce实例时,可以按需自定义配置运行时所需的配置项, 多个实例部署可以使用不同配置项组合,运行不同的子服务,再通过一个统一的 Proxy(Nginx或云端proxy) 将请求桥接到具体的paopao-ce部署实例。 |
这个也有考虑, 目前提供的机制是各个子服务(gRPC/RESTful API服务)可以在一个独立端口提供业务服务,也可以多个同类型的子服务(RESTful API服务 或者 gRPC 服务)共享同一个端口提供服务,比如 # file: config.yaml
Features:
Default: ["Sqlite3", "Zinc", "LocalOSS", "BigCacheIndex", "Web", "Admin", "Bot"]
WebServer: # Web服务
HttpIp: 0.0.0.0
HttpPort: 8010
ReadTimeout: 60
WriteTimeout: 60
AdminServer: # Admin后台运维服务
HttpIp: 0.0.0.0
HttpPort: 8010
ReadTimeout: 60
WriteTimeout: 60
BotServer: # Bot服务
HttpIp: 0.0.0.0
HttpPort: 8010
ReadTimeout: 60
WriteTimeout: 60
...
各个子服务在设计时,也考虑了多服务同端口同时运行的场景,URL在设计时进行了分组管理,比如
|
目前文档没怎么完善,有些内部设计细节只体现在代码中,还没有导出到文档中进行说明,后续会持续完善开发文档的编写。 |
👍🏻不错,挺好的! |
… in sample port will occurs error when stop app
这个问题已经解决了,多服务同端口运行 可以正常工作了。 |
主要功能特性
单实例多服务运行
的机制,也就是说可以在单个paopao-ce实例中在不同端口上运行多个服务,比如新的Web
服务、旧的Deprecated:OldWeb
服务、独立的前端服务Frontend:Web
、后续将添加的服务于Android/iOS的Mobile
服务等等都可以通过配置文件config.yaml
配置成在不同的端口同时在一个paopao-ce实例中运行;Web
服务,同时保留旧的Deprecated:OldWeb
服务;Frontend:Web
,在配置文件config.yaml
的Features中添加Frontend:Web
就可以开启该服务;本PR是作为 v0.2.0 版本的一部分
Friendship
featureLightship
featureSqlx
featureWeb
serviceDeprecated:OldWeb
feature如何审核这个PR
由于这个PR是一个经过 长时间演进过来的代码,代码基特别大,基本上相当于一次代码重构,建议通过clone代码switch到feature/mir代码分支然后直接审核代码。
这个PR是如何形成的?
本人希望这个PR先合并到
dev
分支,后期再持续优化。 PR可能还有一些不足之处,我会持续优化,这里先挂出来,大家都可以先试试、尝尝鲜,欢迎提供建议、优化。@rocboss 看看有没有时间,抽空帮忙审核一下,PR也不忙着合并,先至少挂个一星期吧。本人年前还有点闲余时间,可以持续跟踪反馈,年后要忙其他事就没那么多闲余时间了:)