You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.
huolongshe 7b096a2732 新增minikube部署脚本。 3 weeks ago
dev 统一dev和prod中nexus-data的卷名 3 weeks ago
k8s 新增minikube部署脚本。 3 weeks ago
minikube 新增minikube部署脚本。 3 weeks ago
prod 新增minikube部署脚本。 3 weeks ago
.gitignore init commit 1 month ago
LICENSE init commit 1 month ago
README.md 新增minikube部署脚本。 3 weeks ago
build-dockers.sh init commit 1 month ago

README.md

CUBE-Net微服务框架

CUBE-Net微服务框架是一套基于ServiceBoot微服务引擎开发的云原生微服务应用基础开发平台和代码脚手架工具,目前提供服务注册与发现中心、统一数据配置中心、统一内容服务中心、API网关、用户认证授权中心、前端主门户等微服务框架基础组件,以及若干前后端微服务开发样例程序。使用CUBE-Net微服务框架基础组件并参考其样例代码,开发者无需太多微服务相关基础知识便可快速上手并开发出实用的微服务应用程序。

微服务基础组件

  • 服务注册与发现中心——Consul

    在CUBE-Net微服务框架中使用第三方组件Consul来充当服务注册/发现中心,同时还兼做统一数据配置中心:

    1. 服务注册:每个微服务在启动时,都应通过调用Consul提供的客户端API将其注册到Consul,即在Consul中登记该微服务的名称以及提供服务的IP地址和端口号等信息。

    2. 服务发现:所有前后端微服务之间的相互访问全部通过微服务名称来进行寻址。当一个微服务需要访问另一个微服务时,它首先使用目标微服务的名称向Consul发起服务查询请求,找到目标微服务的IP地址和端口号,然后再向该IP地址和端口号发起服务请求。

    3. 统一数据配置中心:除了服务注册和服务发现之外,Consul还提供了基于键值对存储的配置中心功能。在CUBE-Net微服务框架中,将需要统一管理的应用程序配置数据统存储于一个yml文件之中(开发环境:dev/central-server-cinfig/application.yml, docker-compose生产环境:prod/central-server-cinfig/application.yml, k8s生产环境:k8s/application-config/application.yml),Consul可根据该文件的变化动态加载键值对内容,并向所有微服务提供访问接口。

  • 内容服务器——Nexus

    在CUBE-Net微服务框架中使用第三方组件Nexus来充当内容服务器,为整个微服务应用系统提供统一的文件存储、制品仓库等服务功能。

  • API网关——gateway

    CUBE-Net微服务框架使用基于ServiceBoot开发的特殊微服务——gateway——来充当API网关,用于为后端微服务提供统一的访问入口和HTTP路由转发功能。

    在CUBE-Net微服务框架中,前端程序不能直接向后端微服务发起HTTP服务请求,而是将所有服务请求统一发送至API网关,再由API网关根据请求地址中的服务名自动将这些服务请求转发至后端相应的微服务中去。

    除了HTTP路由功能外,gateway还在用户身份认证时充当Oauth2协议的client身份。

  • 用户认证授权中心——uaa

    CUBE-Net微服务框架使用基于ServiceBoot开发的特殊微服务——uaa——来充当用户认证授权中心,用于提供基于OAuth2协议和JWT(Json Web Token)的用户认证和授权服务,以及基于JWT和角色的微服务访问控制等功能。

    此外,CUBE-Net微服务框架中的uaa还提供了用户管理、角色管理、消息管理、应用管理、文档管理等服务功能。

    为了实现这些管理功能,uaa需要维护一个MySql数据库。

  • 前端主门户——portal

    CUBE-Net微服务框架使用基于ServiceBoot开发的前端微服务——portal——来为整个微服务应用系统提供统一的前端主门户入口界面。portal前端界面基于Angular框架,使用TypeScript和HTML等语言开发。

  • 前端微服务开发样例1——papp1

    paap1是基于ServiceBoot开发的CUBE-Net微服务框架前端微服务样例程序。开发者可以参考该代码模板来开发自己的前端微服务。

  • 后端微服务开发样例1——uapp1

    uaap1是基于ServiceBoot开发的CUBE-Net微服务框架后端微服务样例程序。开发者可以参考该代码模板来开发自己的后台微服务。

    uaap1代码主要展示了如何在一个微服务中访问其他后台微服务(uapp2)。

  • 后端微服务开发样例2——uapp2

    uaap2是基于ServiceBoot开发的CUBE-Net微服务框架后端微服务样例程序。开发者可以参考该代码模板来开发自己的后台微服务。

    uaap2代码主要展示了如何在微服务中响应HTTP服务请求并进行相应的数据库增删改查等操作。uaap2需要维护一个MySql数据库。

开发环境准备

  • 操作系统

    • Linux,建议Ubuntu 16.04 LTS以上
  • Python 3.5 以上

  • Docker

    1. 安装Docker引擎,方法和步骤参见: https://docs.docker.com/engine/install/ubuntu/

    2. 配置Docker引擎,使其能够向在本机部署的非安全的镜像仓库中推送镜像(用本机实际IP替换下列命令中的IP,注意不要使用127.0.0.1或localhost),参见: https://docs.docker.com/registry/insecure/#deploy-a-plain-http-registry

       # echo '{"insecure-registries": ["<本机网卡IP地址>:8001", "192.168.0.0/16"]}' > /etc/docker/daemon.json
       # systemctl restart docker
      
  • docker-compose

    建议尽量安装docker-compose最新版(1.29以上):

      # curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` > /usr/bin/docker-compose
      # chmod +x /usr/bin/docker-compose
      (通过修改上述命令中URL中的版本号,可以自定义需要的版本)
    
  • Node.js

    1. https://nodejs.org/en/download/ 下载最新版本的node,拷贝至/opt。

    2. 解压,创建符号连接以便可以调用(用实际版本号替换其中node版本号):

       # 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
      
    3. 配置npm源国内镜像

       # npm config set registry https://registry.npm.taobao.org
       # npm config get registry
      
  • Angular CLI

    1. 安装

       # npm install -g @angular/cli@10.1.1
      
    2. 创建符号链接以便可以调用(用实际版本号替换其中node版本号)

       # ln -s /opt/node-v10.15.0-linux-x64/bin/ng /usr/bin/ng
      
  • 集成开发环境

    • 建议: PyCharm

开发

CUBE-Net微服务框架代码下载

  1. 在当前用户主目录下新建cubenet子目录:

     # cd 
     # mkdir cubenet
    
  2. 将CUBE-Net微服务框架所有基础组件源代码下载至当前用户主目录的cubenet子目录之下:

     # cd ~/cubenet
     # git clone https://git.openi.org.cn/OpenI/cubenet.git
     # git clone https://git.openi.org.cn/OpenI/cubenet_uaa.git
     # git clone https://git.openi.org.cn/OpenI/cubenet_gateway.git
     # git clone https://git.openi.org.cn/OpenI/cubenet_portal.git
     # git clone https://git.openi.org.cn/OpenI/cubenet_papp1.git
     # git clone https://git.openi.org.cn/OpenI/cubenet_uapp1.git
     # git clone https://git.openi.org.cn/OpenI/cubenet_uapp2.git
    
  3. 修改统一配置中心配置参数

    第一次从git仓库下载cubenet项目代码后,需要分别修改其子目录下dev/central-server-config/application.yml、prod/central-server-config/application.yml、minikube/cubeai-configmap.yml和k8s/cubeai-configmap.yml几个文件内容,将相关配置项改为与自己系统中的配置相一致。

运行/试用样例程序

  1. 拉起所有依赖dockers:

    打开一个terminal窗口,运行:

     # cd ~/cubenet/cubenet/dev
     # docker-compose up
    
  2. 等待nexus服务启动完成后,执行Nexus配置脚本:

     sh nexus_configure_dev.sh
    
  3. 运行基础组件微服务

    在集成开发环境(例如Pycharm)中分别打开并运行uaa、gateway和portal三个基础组件微服务工程,参见各工程目录下的README文件。

    开发者可以直接使用这三个基础微服务,也可以根据自己项目的特殊需求对这三个开源微服务进行二次开发。

  4. 运行前后端样例微服务

    在集成开发环境(例如Pycharm)中分别打开并运行papp1、uapp1和uapp2三个样例微服务工程,参见各工程目录下的README文件。

  5. 初始化主页内容

    1. 在本机浏览器打开网页:http://127.0.0.1:8080,进入系统主页面。

    2. 以admin用户登录,并修改admin密码。

    3. 进入”系统管理|文稿管理“页面,新建如下几个新文稿:


       - 标题: 帮助文档            
       - 主题1: help
       - 正文: 本应用系统的帮助文档
      

       - 标题: 首页介绍            
       - 主题1: homepage-intro
       - 正文: 本应用系统简介,将显示在主门户首页上方
      

       - 标题: 首页补充            
       - 主题1: homepage-othors
       - 正文: 欲显示在主门户首页下方的内容
      
    4. 进入”系统管理|应用管理“页面,新建如下应用:


       - 应用名: 简易博客
       - URL: /papp1/#/   
       - 主题1: 平台导航
       - 主题2: homepage
      
  6. 试用样例程序

    1. 进入“系统管理|角色管理”页面,添加一个新角色:ROLE_BLOG。
    2. 进入“系统管理|用户管理”页面,新建一个用户,并为该用户添加角色:ROLE_BLOG。
    3. 退出admin用户,以新创建的用户身份登录,然后进入”简易博客“子应用,试用各种应用功能。

开发自己的应用程序

  1. 开发自己应用的后端微服务

    1. 在~/cubenet下新建一个子目录,例如,假设待开发应用名为myapp,新的后端微服务名为umm,则可新建一个子目录:myapp_umm。
    2. 将~/cubenet/uapp2目录下所有文件和子目录拷贝一份至上一步新建子目录。
    3. 编辑新目录下application.yml文件,修改微服务名称等参数配置。
    4. 在集成开发环境(例如Pycharm)中打开该新目录,并进行开发调试。
  2. 开发自己应用的前端微服务

    1. 在~/cubenet下新建一个子目录,例如,假设待开发应用名为myapp,新的前端微服务名为pmm,则可新建一个子目录:myapp_pmm。
    2. 将~/cubenet/papp1目录下所有文件和子目录拷贝一份至上一步新建子目录。
    3. 编辑新目录下application.yml文件,修改微服务名称等参数配置。
    4. 在集成开发环境(例如Pycharm)中打开该新目录,并进行开发调试。
  3. 将自己应用的前端页面链接加入主页面

    1. 在本机浏览器打开网页:http://127.0.0.1:8080,进入系统主页面。

    2. 以admin用户登录。

    3. 进入”系统管理|应用管理“页面,新建如下应用:


       - 应用名: 我的应用
       - URL: /pmm/#/   
       - 主题1: 平台导航
       - 主题2: homepage
      
    4. 刷新浏览器主页面。

    当修改并编译各前端微服务的Angular代码后,应在浏览器中刷新页面以查看更新后的界面。

部署

基于CUBE-Net微服务框架开发的应用系统既可以使用docker-compose在单机上部署,也可以在基于k8s/istio的云原生环境中进行部署。

  • docker-compose部署

    参见~/cubenet/cubenet/prod目录下README文件。

  • minikube部署

    参见~/cubenet/cubenet/minikube目录下README文件。

  • k8s部署

    参见~/cubenet/cubenet/k8s目录下README文件。

简介

CUBE-Net微服务框架是一套基于ServiceBoot微服务引擎开发的云原生微服务应用基础开发平台和代码脚手架工具,目前提供服务注册与发现中心、统一数据配置中心、统一内容服务中心、API网关、用户认证授权中心、前端主门户等微服务框架基础组件,以及若干前后端微服务开发样例程序。使用CUBE-Net微服务框架基础组件并参考其样例代码,开发者无需太多微服务相关基础知识便可快速上手并开发出实用的微服务应用程序。

Shell