Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
|
1 week ago | |
---|---|---|
dev | 1 week ago | |
docs | 2 months ago | |
k8s | 11 months ago | |
minikube | 1 week ago | |
prod | 1 week ago | |
.gitignore | 1 year ago | |
LICENSE | 1 year ago | |
README.md | 1 week ago | |
build-dockers.sh | 1 week ago |
CubePy微服务框架是一套基于 ServiceBoot微服务引擎 开发的云原生微服务应用基础开发平台和代码脚手架工具,目前提供服务注册与发现中心、统一数据配置中心、统一内容服务中心、API网关、用户认证授权中心、前端主门户等微服务框架基础组件,以及若干前后端微服务开发样例程序。使用CubePy微服务框架基础组件并参考其样例代码,开发者无需太多微服务相关基础知识便可快速上手并开发出实用的微服务应用程序。
服务注册与发现中心——Consul
在CubePy微服务框架中使用第三方组件Consul来充当服务注册/发现中心,同时还兼做统一数据配置中心:
服务注册:每个微服务在启动时,都应通过调用Consul提供的客户端API将其注册到Consul,即在Consul中登记该微服务的名称以及提供服务的IP地址和端口号等信息。
服务发现:所有前后端微服务之间的相互访问全部通过微服务名称来进行寻址。当一个微服务需要访问另一个微服务时,它首先使用目标微服务的名称向Consul发起服务查询请求,找到目标微服务的IP地址和端口号,然后再向该IP地址和端口号发起服务请求。
统一数据配置中心:除了服务注册和服务发现之外,Consul还提供了基于键值对存储的配置中心功能。在CubePy微服务框架中,将需要统一管理的应用程序配置数据统存储于一个yml文件之中(开发环境:dev/central-server-cinfig/application.yml, docker-compose生产环境:prod/central-server-cinfig/application.yml, k8s生产环境:k8s/application-config/application.yml),Consul可根据该文件的变化动态加载键值对内容,并向所有微服务提供访问接口。
内容服务器——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 以上
Docker
安装Docker引擎,方法和步骤参见: https://docs.docker.com/engine/install/ubuntu/。
配置Docker引擎,使其能够向在本机部署的非安全的镜像仓库中推送镜像(用本机实际IP替换下列命令中的IP,注意不要使用127.0.0.1或localhost),参见: https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry
$ sudo echo '{"insecure-registries": ["<本机网卡IP地址>:8001", "192.168.0.0/16"]}' > /etc/docker/daemon.json
$ sudo systemctl restart docker
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
(通过修改上述命令中URL中的版本号,可以自定义需要的版本)
Node.js
以root身份登录,从 https://nodejs.org/en/download/ 下载最新版本的node,拷贝至/opt。
解压,创建符号连接以便可以调用(用实际版本号替换其中node版本号):
$ sudo -i
# cd /opt
# tar -xvf node-v10.15.0-linux-x64.tar.xz
# ln -s node-v10.15.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源国内镜像
# npm config set registry https://registry.npm.taobao.org
# npm config get registry
Angular CLI
安装
# npm install -g @angular/cli@10.1.1
创建符号链接以便可以调用(用实际版本号替换其中node版本号)
# ln -s /opt/nodejs/bin/ng /usr/bin/ng
# ng --version
集成开发环境
以非root用户身份登录,在当前用户主目录下新建cubenet子目录:
$ cd
$ mkdir cubenet
将CubePy微服务框架所有基础组件源代码下载至当前用户主目录的cubenet子目录之下:
$ cd ~/cubenet
$ git clone https://git.openi.org.cn/OpenI/cubepy.git
$ git clone https://git.openi.org.cn/OpenI/cubepy_uaa.git
$ git clone https://git.openi.org.cn/OpenI/cubepy_gateway.git
$ git clone https://git.openi.org.cn/OpenI/cubepy_portal.git
$ git clone https://git.openi.org.cn/OpenI/cubepy_papp1.git
$ git clone https://git.openi.org.cn/OpenI/cubepy_uapp1.git
$ git clone https://git.openi.org.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: /pmm/#/
- 主题1: 平台导航
- 主题2: homepage
刷新浏览器主页面。
当修改并编译各前端微服务的Angular代码后,应在浏览器中刷新页面以查看更新后的界面。
基于CubePy微服务框架开发的应用系统既可以使用docker-compose在单机上部署,也可以在基于k8s/istio的云原生环境中进行部署。
docker-compose部署
参见~/cubenet/cubepy/prod目录下README文件。
minikube部署
参见~/cubenet/cubepy/minikube目录下README文件。
k8s部署
参见~/cubenet/cubepy/k8s目录下README文件。