Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
|
2 weeks ago | |
---|---|---|
dev | 2 weeks ago | |
docs | 2 weeks ago | |
k8s | 1 year ago | |
minikube | 2 weeks ago | |
prod | 2 weeks ago | |
.gitignore | 1 year ago | |
LICENSE | 1 year ago | |
README.md | 2 weeks ago | |
build-dockers.sh | 3 months ago |
CubePy微服务框架是一套基于 ServiceBoot微服务引擎 开发的云原生微服务应用基础开发平台和代码脚手架工具,目前提供服务注册与发现中心、统一数据配置中心、统一内容服务中心、API网关、用户认证授权中心、前端主门户等微服务框架基础组件,以及若干前后端微服务开发样例程序。使用CubePy微服务框架基础组件并参考其样例代码,开发者无需太多微服务相关基础知识便可快速上手并开发出实用的微服务应用程序。
CubePy微服务框架总体架构如下图所示:
服务注册与发现中心——Consul
在CubePy微服务框架中,当在非k8s环境(例如开发环境和docker-compose生产环境)中运行时,使用第三方组件Consul来充当服务注册/发现中心:
服务注册:每个微服务在启动时,都应通过调用Consul提供的客户端API将其注册到Consul,即在Consul中登记该微服务的名称以及提供服务的IP地址和端口号等信息。
服务发现:所有前后端微服务之间的相互访问全部通过微服务名称来进行寻址。当一个微服务需要访问另一个微服务时,它首先使用目标微服务的名称向Consul发起服务查询请求,找到目标微服务的IP地址和端口号,然后再向该IP地址和端口号发起服务请求。
统一数据配置中心--configserver
CubePy微服务框架使用自研的configserver来充当统一数据配置中心。为了使用configserver,需要将应用程序统一配置数据统存储于一个yml文件之中(开发环境:dev/central-server-cinfig/application.yml, docker-compose生产环境:prod/central-server-cinfig/application.yml, k8s生产环境:k8s/application-config/application.yml)。
内容服务器——Nexus
在CubePy微服务框架中使用第三方组件Nexus来充当内容服务器,为整个微服务应用系统提供统一的文件存储、制品仓库等服务功能。
API网关——gateway
CubePy微服务框架使用基于ServiceBoot开发的特殊微服务——gateway——来充当API网关,用于为后端微服务提供统一的访问入口和HTTP路由转发功能。
在CubePy微服务框架中,前端程序不能直接向后端微服务发起HTTP服务请求,而是将所有服务请求统一发送至API网关,再由API网关根据请求地址中的服务名自动将这些服务请求转发至后端相应的微服务中去。
除了HTTP路由功能外,gateway还在用户身份认证时充当Oauth2协议的client身份。
用户认证授权中心——uaa
CubePy微服务框架使用基于ServiceBoot开发的特殊微服务——uaa——来充当用户认证授权中心,用于提供基于OAuth2协议和JWT(Json Web Token)的用户认证和授权服务,以及基于JWT和角色的微服务访问控制等功能。
此外,CubePy微服务框架中的uaa还提供了用户管理、角色管理、消息管理、应用管理、文档管理等服务功能。
为了实现这些管理功能,uaa需要维护一个MySql数据库。
前端主门户——portal
CubePy微服务框架使用基于ServiceBoot开发的前端微服务——portal——来为整个微服务应用系统提供统一的前端主门户入口界面。portal前端界面基于Angular框架,使用TypeScript和HTML等语言开发。
前端微服务开发样例1——papp1
paap1是基于ServiceBoot开发的CubePy微服务框架前端微服务样例程序。开发者可以参考该代码模板来开发自己的前端微服务。
后端微服务开发样例1——uapp1
uaap1是基于ServiceBoot开发的CubePy微服务框架后端微服务样例程序。开发者可以参考该代码模板来开发自己的后台微服务。
uaap1代码主要展示了如何在一个微服务中访问其他后台微服务(uapp2)。
后端微服务开发样例2——uapp2
uaap2是基于ServiceBoot开发的CubePy微服务框架后端微服务样例程序。开发者可以参考该代码模板来开发自己的后台微服务。
uaap2代码主要展示了如何在微服务中响应HTTP服务请求并进行相应的数据库增删改查等操作。uaap2需要维护一个MySql数据库。
操作系统
Python 3.5 以上,建议 Python 3.7 以上
Docker
安装Docker引擎,方法和步骤参见: https://docs.docker.com/engine/install/ubuntu/ 。
使用非root用户登录,配置其具有操作docker的权限:
$ sudo usermod -aG docker $USER
$ newgrp docker
配置Docker引擎相关参数:
1. 在 /etc/docker/daemon.json 文件(如没有则创建)中添加如下内容:
{
"registry-mirrors": [
"https://mirror.baidubce.com/"
],
"live-restore": true,
"insecure-registries": [["<本机网卡IP地址(例如:192.168.1.2)>", "<本机网卡IP地址(例如:192.168.1.2)>:8001"]]
}
2. 然后执行如下命令重启Docker引擎:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
注:
registry-mirrors: Docker仓库国内镜像
insecure-registries: 非安全镜像仓库地址, 这里配置为本机网卡IP地址或地址段,以及本地部署的Nexus镜像仓库。含义参见: https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry
docker-compose
建议尽量安装docker-compose最新版(1.29以上):
$ sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
$ sudo chmod +x /usr/bin/docker-compose
Node.js
# cd /opt
# wget https://nodejs.org/download/release/v15.1.0/node-v15.1.0-linux-x64.tar.xz
# tar -xvf node-v15.1.0-linux-x64.tar.xz
# ln -s node-v15.1.0-linux-x64 nodejs
# ln -s /opt/nodejs/bin/node /usr/bin/node
# ln -s /opt/nodejs/bin/npm /usr/bin/npm
# ln -s /opt/nodejs/bin/npx /usr/bin/npx
# node -v
# npm -v
# npm config set registry https://registry.npm.taobao.org
# npm config get registry
Angular CLI
# npm install -g @angular/cli@10.1.1
# ln -s /opt/nodejs/bin/ng /usr/bin/ng
# ng --version
集成开发环境
以非root用户身份登录,在当前用户主目录下新建cubenet子目录:
$ cd
$ mkdir cubenet
将CubePy微服务框架所有基础组件源代码下载至当前用户主目录的cubenet子目录之下:
$ cd ~/cubenet
$ git clone https://openi.pcl.ac.cn/OpenI/cubepy.git
$ git clone https://openi.pcl.ac.cn/OpenI/cubepy_uaa.git
$ git clone https://openi.pcl.ac.cn/OpenI/cubepy_gateway.git
$ git clone https://openi.pcl.ac.cn/OpenI/cubepy_portal.git
$ git clone https://openi.pcl.ac.cn/OpenI/cubepy_papp1.git
$ git clone https://openi.pcl.ac.cn/OpenI/cubepy_uapp1.git
$ git clone https://openi.pcl.ac.cn/OpenI/cubepy_uapp2.git
修改统一配置中心配置参数
第一次从git仓库下载cubepy项目代码后,需要分别修改其子目录下dev/central-server-config/application.yml、prod/central-server-config/application.yml、minikube/cubenet-configmap.yml和k8s/cubenet-configmap.yml几个文件内容,将相关配置项改为与自己系统中的配置相一致。
可参考个配置文件中的相关注释项进行修改。
拉起所有依赖dockers:
打开一个terminal窗口,运行:
$ cd ~/cubenet/cubepy/dev
$ sudo docker-compose up
等待nexus服务启动完成后,执行Nexus配置脚本:
$ sh nexus_configure_dev.sh
运行基础组件微服务
在集成开发环境(例如Pycharm)中分别打开并运行uaa、gateway和portal三个基础组件微服务工程,参见各工程目录下的README文件。
开发者可以直接使用这三个基础微服务,也可以根据自己项目的特殊需求对这三个开源微服务进行二次开发。
运行前后端样例微服务
在集成开发环境(例如Pycharm)中分别打开并运行papp1、uapp1和uapp2三个样例微服务工程,参见各代码工程目录下的README文件。
初始化主页内容
在本机浏览器打开网页:http://127.0.0.1:8080,进入系统主页面。
以admin用户登录,并修改admin密码。
进入”系统管理|文稿管理“页面,新建如下几个新文稿:
- 标题: 帮助文档
- 主题1: help
- 正文: 本应用系统的帮助文档
- 标题: 首页介绍
- 主题1: homepage-intro
- 正文: 本应用系统简介,将显示在主门户首页上方
- 标题: 首页补充
- 主题1: homepage-othors
- 正文: 欲显示在主门户首页下方的内容
进入”系统管理|应用管理“页面,新建如下应用:
- 应用名: 简易博客
- URL: /ms/papp1/#/
- 主题1: 平台导航
- 主题2: homepage
试用样例程序
开发自己应用的后端微服务
开发自己应用的前端微服务
将自己应用的前端页面链接加入主页面
在本机浏览器打开网页:http://127.0.0.1:8080,进入系统主页面。
以admin用户登录。
进入”系统管理|应用管理“页面,新建如下应用:
- 应用名: 我的应用
- URL: /ms/pmm/#/
- 主题1: 平台导航
- 主题2: homepage
刷新浏览器主页面。
当修改并编译各前端微服务的Angular代码后,应在浏览器中刷新页面以查看更新后的界面。
基于CubePy微服务框架开发的应用系统既可以使用docker-compose在单机上部署,也可以在基于k8s/istio的云原生环境中进行部署。
docker-compose部署
参见 prod/README 。
minikube部署
参见 minikube/README 。
k8s部署
参见 k8s/README 。