云上平流一个让微服务应用开发更容易的网站

服务类型

在Giterver中,可交付的最小单元为“微服务”。按照服务的公开性与对其它服务的作用,分为以下几种类型:

前端服务

用户能直接访问的服务类型,它反向代理功能服务。

功能服务

前端服务的直接后端服务,一般情况下,它通过调用其它基础服务完成业务功能。

基础服务

完成一些基础性功能的后端服务,也可以调用其它基础服务。前端服务不可以直接调用基础服务,必须通过中间功能服务的加工处理。

更详细的功能请参考工具内的“服务设计”界面。

服务创建

目前,Giterver前端服务支持Vue、React和Angular三大主流框架;而后端服务,则支持Go、Java和Javascript(Nodejs)语言。

Vue前端服务

# 安装vue工具Vue CLI
# 网址: https://cli.vuejs.org/zh/
npm install -g @vue/cli
# 或者
yarn global add @vue/cli

# 创建项目
vue create my-frontend-service

React前端服务

# 使用create-react-app创建React项目
# 网址: https://create-react-app.dev/
npx create-react-app my-frontend-service

Angular前端服务

# 安装angular的工具Angular CLI
# 网址: https://cli.angular.io/
npm install -g @angular/cli

# 创建项目
ng new my-frontend-service

Java微服务

目前,Giterver只支持使用 maven 工具的微服务,无框架要求,但必须打包为“jar”或者“war”包,同时注意,打包所有项目依赖。

Go微服务

关于Go微服务,必须在项目根目录下提供“main.go”入口文件,Giterver使用该文件进行构建,注意使用Go Module管理依赖,工具内部已配置好“GOPROXY”。

Nodejs微服务

从Giterver设计之初,后端服务偏好使用Go或者Java语言。对于Nodejs微服务,无框架与脚手架的要求,但必须提供可供nodejs执行的入口js文件(请参考后台服务配置),并且无编译过程,整个包作为整体直接交付。但作为特例,已原生支持 nestjs 框架。

# 按照nestjs脚手架工具
npm i -g @nestjs/cli

# 创建后台服务
nest new my-backend-service

服务配置

前端服务

在项目根目录下,添加文件“giterver.toml”,将下面内容按您的需要修改然后写入文件。注意,此文件必须同源代码一起提交至版本库中。

[node]
# 自定义nodejs仓库,可选,默认为淘宝镜像仓库
registry = "https://registry.npm.taobao.org"

# 禁用淘宝仓库,直接使用npm官方仓库
disable_use_taobao_registry = false

# http(s)配置,可多个,注意端口不要冲突
[[http]]
# http端口
port = 8080

# 功能服务暴露路径前缀
prefix_expose = "/api"

# 是否为https
tls = false
# https证书文件pem格式
cert_file = ""
# https密钥文件
key_file = ""

# 是否将http请求自动跳转至https请求
auto_https = false

后端服务

在项目根目录下,添加文件“giterver.toml”,并提供暴露的端口和名称即可。注意,将“giterver.toml”同源代码一起提交至版本库中。

# 暴露的端口
expose_port = 8500
# 暴露的名称
expose_name = "your_service_name"

# 就绪探针
# 对于Java或Go的微服务,一般情况下,默认即可。但对于nodejs微服务,首次启动时,npm install可能非常耗时,需要做参数调整。
[readiness]
# 启动后首次探测的延迟秒数
delay_seconds = 1
# 探测失败的重试次数
retry_times = 15
# 探测失败的重试间隔秒数
interval_seconds = 1

# 同前端服务,但多了两个配置项
[node]
ready = true
# 入口文件,nodejs微服务必须
entry = "index.js"