# beautiful-leg 简介
# LOGO (还没想好 找个牛X点的图镇库吧~)
Born as a demon, so what ?
# 概述
beautiful-leg 采用 微服务架构2.0 思想(比较流行的服务架构模型,网上类似的开发架构比较多), 服务网格 系统打造有逼格的多人商用博客社交平台。 主体架构上针对国内中顶级开发框架水准,(俺们只想做最好的)如有参加设计意向请联系任意开发者或者在issues中提出宝贵意见*_*。
- 仓库地址:https://github.com/coming-here/beautiful-leg
- tap: 起初前一周大家先不要忙于提交代码 我建议大家先去网上学习一下微服务开发的相关知识 不然可能会有点懵逼... 微服务并不难而是在于东西比较多
- 只要大家有个概念就可以快速上手开发应用模块 后续也会更新blog同步开发应用的技术栈
# 开发工具
这里列出了我平常用的工具 你们有好用的软件可以追加
工具 | 地址 |
---|---|
Intellij IDEA | https://www.jetbrains.com/idea/download (单frontend开发可用Visual Studio) |
SwitchHosts | https://oldj.github.io/SwitchHosts/ |
FinalShell | http://www.hostbuf.com/ (这玩应看着有bigger 其实有很多bug 有时候疯狂耗内存 我还是建议用xshell) |
Postman | https://www.getpostman.com/downloads/ |
SQLyog | https://sqlyog.en.softonic.com/ |
PicPick | https://picpick.app/zh/download |
# 商业组件
服务 | 说明 | 地址 |
---|---|---|
Aliyun SDK OSS | 阿里云对象存储服务 | 官网 (opens new window) |
- TODO:由于涉及前后端技术点比较多 有些也是起步学习 边学边用 暂时列出下面这些吧...
# 后端技术
技术 | 说明 | 地址 |
---|---|---|
Spring Boot | 新一代 JavaEE 开发标准 | GitHub (opens new window) |
Spring Cloud Alibaba | 阿里巴巴基于 Spring Cloud 编程模型的微服务生态 | GitHub (opens new window) |
Spring Cloud Alibaba Dubbo | 与 Spring Cloud Alibaba 生态相结合的高性能 Java RPC 框架 | GitHub (opens new window) |
Spring Security oAuth2 | 安全认证和授权框架 | GitHub (opens new window) |
Spring Social | 第三方登录接入框架 | GitHub (opens new window) |
TkMyBatis | 基于 MyBatis 二次开发的轻量级框架,用于简化 MyBatis 操作 | GitHub (opens new window) |
MyBatisGenerator | Maven 插件,用于 MyBatis 相关代码生成 | 官网 (opens new window) |
MybatisCodeHelper | Intellij IDEA 插件,用于 MyBatis 相关代码生成 | 官网 (opens new window) |
PageHelper | MyBatis 分页插件 | GitHub (opens new window) |
Swagger | API 文档生成工具 | GitHub (opens new window) |
HikariCP | 数据库连接池 | GitHub (opens new window) |
Docker | 容器化引擎 | 官网 (opens new window) |
Docker Compose | 容器编排工具 | 官网 (opens new window) |
Kubernetes | 容器编排系统 | 官网 (opens new window) |
TiDB | 分布式数据库 | 官网 (opens new window) |
OKHttp3 | 轻量级网络框架 | GitHub (opens new window) |
Feign | 声明式 HTTP 客户端 | GitHub (opens new window) |
# 前端技术
- 我前段技能比较low... @流浪诗人 有时间可以先看看这个 Vue Element Admin (opens new window)
技术 | 说明 | 地址 |
---|---|---|
Vue | 前端框架,MVVM 模式的实现者 | GitHub (opens new window) |
Vue CLI | Vue 脚手架,基于 NodeJS | GitHub (opens new window) |
Vue Router | Vue 路由框架 | GitHub (opens new window) |
Vuex | Vue 全局状态管理框架 | GitHub (opens new window) |
Axios | 前端 HTTP 框架 | GitHub (opens new window) |
Element UI | 饿了么 UI 框架 | 官网 (opens new window) |
Vue Element Admin | 基于 Element UI 的前端后台解决方案 | GitHub (opens new window) |
Vue Image Crop Upload | Vue 图片剪裁上传组件 | GitHub (opens new window) |
# 框架集成
集成 | 完成 |
---|---|
Spring Boot | ✔ |
Spring Cloud Alibaba | ✔ |
Spring Cloud Alibaba Dubbo | ✔ |
Spring Cloud Alibaba Sentinel | ✔ |
Spring Security oAuth2 | ✔ |
TkMyBatis | ✔ |
HikariCP | ✔ |
OKHttp3 | ✔ |
Feign 传递 Token | ✔ |
- 初始框架集成基本ok 开发者可以尝试应用docker部署服务的方式开发项目 微服务2.0需要大量内存和机器性能支持k8s 有兴趣者可以本地搞一搞(暂时先开发功能 以后大家有兴趣我可以收集资料大家一起学习提升)
- 注明:由于本人服务器实在太渣渣... 此项目后续如果需要线上展示可能需要众筹购买服务器...看以后发展和大家的积极性兴趣吧
# 模块介绍
模块 | 功能介绍 |
---|---|
dependencies | 统一以来管理模块 |
commons | 通用工具及模型处理模块 |
configuratio | 配置管理模块(微服务的服务配置管理模块)配置一般在配置中心 |
provider | 服务提供者模块 |
business | 业务功能模块 大家开发功能的集中模块 最好一个功能一个模块 |
gateway | 网关服务 对内RPC对外REST 此处即是对外的暴露REST服务 |
cloud | 云服务 用于对接阿里云存储服务文件上传下载等 |
# 后台功能清单 (功能清单大家可以根据自己的喜好开发 后续开发可以追加在表格里 可以标记对号也可标注自己的开发者标识(github用户名)防止功能重复开发)
- 开发时在自己的分支开发即可 代码合并周期为每周的周五下午五点(大家没时间我可以代劳)下面部分功能还未coding 还有些为规划大家也可以提出意见
- 代码也不用拘泥于设计 想用什么依赖自己引入即可 最好应用设计模式和快速迭代的xp开发模式 敏捷开发极限编程 微服务的意义就在于轻应用 即插即用
- 编写模块时 不局限于磊代码 复制黏贴 好的代码可以标注一下注释方便大家交流 有问题的代码大家群里讨论优化策略
# 后台登录
功能 | 完成 |
---|---|
用户注册 | ✔ |
用户登录 | ✔ |
获取 Token | ✔ |
刷新 Token |
# 个人信息
功能 | 完成 |
---|---|
查看信息 | ✔ |
更新信息 | ✔ |
更新密码 | ✔ |
更新头像 | ✔ |
# 权限管理
角色 | 菜单 |
---|---|
超级管理员 | 所有菜单权限 |
运营人员 | 首页、用户、促销、运营、内容 |
功能 | 说明 | 完成 |
---|---|---|
权限管理 | 添加权限、删除权限、修改权限、以树形结构返回权限 | |
角色管理 | 添加角色、删除角色、更新角色、角色列表、获取角色权限、修改角色权限 | |
成员管理 | CRUD、为成员分配角色、获取成员角色、权限分配、获取权限列表 |
# 前台功能清单
功能 | 完成 |
---|---|
用户注册 | |
用户登录 | ✔ |
获取 Token | ✔ |
刷新 Token | |
头像上传 | ✔ |
# 后台服务规划 (现在没钱搞这个 以后再说 可以单机docker方式开发 服务简单部署暂时不做高可用)
- 下面列出的是cmcc shop应用的部署方案 大家后期可以参考
# 数据访问
服务名 | 端口 | 说明 |
---|---|---|
ums-admin-provider | 随机 | 用户服务提供者 |
# 业务逻辑
服务名 | 端口 | 说明 |
---|---|---|
business-reg | 9000 | 注册服务 |
business-oauth2 | 9001 | 认证服务 |
business-profile | 9002 | 个人信息管理服务 |
# 云服务
服务名 | 端口 | 说明 |
---|---|---|
cloud-upload | 10001 | 文件上传服务 |
# 网关
服务名 | 端口 | 说明 |
---|---|---|
gateway | 8888 | Spring Cloud Gateway |
# 基础设施规划
# Docker
服务 | 主机名 | IP/端口 | CPU/MEM | 说明 |
---|---|---|---|---|
GitLab | docker-gitlab | 192.168.160.200:80 | 2 核 2G | 代码管理 |
Nexus | docker-nexus | 192.168.160.201:80 | 2 核 2G | 依赖管理 |
Harbor | docker-harbor | 192.168.160.202:80 | 2 核 2G | 镜像管理 |
ZenTao | docker-zentao | 192.168.160.203:80 | 2 核 2G | 项目管理 |
# Kubernetes
主机名 | IP | 角色 | CPU/MEM | 磁盘 |
---|---|---|---|---|
kubernetes-master | 192.168.160.110 | Master | 2 核 2G | 20G |
kubernetes-node-01 | 192.168.160.120 | Node | 2 核 4G | 20G |
kubernetes-node-02 | 192.168.160.121 | Node | 2 核 4G | 20G |
kubernetes-node-03 | 192.168.160.122 | Node | 2 核 4G | 20G |
kubernetes-volumes | 192.168.160.130 | NFS | 2 核 2G | 按需扩容 |
# 容器部署配置
- 企业级应用方案必要服务如下(开发时不需要):
# GItLab
version: '3'
services:
web:
image: 'twang2218/gitlab-ce-zh'
restart: always
hostname: '192.168.160.200'
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.160.200'
gitlab_rails['gitlab_shell_ssh_port'] = 2222
unicorn['port'] = 8888
nginx['listen_port'] = 80
ports:
- '80:80'
- '443:443'
- '2222:22'
volumes:
- ./config:/etc/gitlab
- ./data:/var/opt/gitlab
- ./logs:/var/log/gitlab
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Nexus
- 账号: admin
- 密码:
cat /var/lib/docker/volumes/nexus_data/_data/admin.password
version: '3.1'
services:
nexus:
restart: always
image: sonatype/nexus3
container_name: nexus
ports:
- 80:8081
volumes:
- data:/nexus-data
volumes:
data:
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# Harbor
官方 GitHub (opens new window) 上下载最新离线安装版(我已经下载并放置在群分享的 Linux 目录下)并上传至服务器
- 账号: admin
- 密码: Harbor12345
# 解压
tar -zxvf harbor-offline-installer-v1.8.0.tgz
# 修改
cd harbor
vi harbor.yml
hostname: 192.168.160.202
# 安装
./install.sh
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 禅道
- 禅道开源版:http://dl.cnezsoft.com/zentao/docker/docker_zentao.zip
- 下载并解压后将目录名修改为
build
,再通过 Compose 构建
version: '3.1'
services:
zendao:
build: build
restart: always
container_name: zendao
environment:
MYSQL_ROOT_PASSWORD: 123456
ports:
- 80:80
volumes:
- ./app:/app/zentaopms
- ./data:/var/lib/mysql
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
- 最后还希望这个项目能一直做下去,文档不定期更新,代码中存在许多缺陷和问题有待完善,可以watch一下,希望参与的每一个人都能有所收获吧。