vlambda博客
学习文章列表

Mendix结合腾讯TSF实现微服务治理

本实践由腾讯云与西门子工业软件授权发布,未经允许不得转载


彭杉(Mendix产品总监)    

肖雨浓(腾讯云中间件总经理)

姜彪(Mendix技术经理)

韩欣(腾讯微服务平台技术经理)

刘阎(腾讯云中间件产品经理)



01

概述


本文档介绍了西门子企业应用开发平台Mendix应用使用腾讯云微服务平台(简称TSF)实现服务治理的最佳解决方案。该方案仅用于非生产环境的Mendix应用服务治理,如果需要生产环境的最佳方案,可联系咨询西门子Mendix团队及腾讯云TSF团队。


业务背景


当企业有大型应用需要拆分成多个微服务的需求时,Mendix在不依赖任何云平台,如Mendix Cloud、Openshift、K8S等情况下,无法满足服务治理所有的功能,对于Private Cloud环境的运行更是如此。即便是在开源的上如K8S、Openshift、Mesos、Rancher、Docker-swarm容器平台等也不具备较强的服务治理能力。对于代码侵入式较高的服务治理框架,SpringCloud、Dubbo等对于Mendix应用的开发难度较高(对于Mendix应用目前可以通过javaAction方式自定义代码,对于Springcloud,自定义代码的权限远远不够),固不适用;而对于专业的无代码侵入式Service Mesh服务治理框架,如Istio,Linkerd、Nginmesh、Maistra等却需要有专业的团队去维护, 时间成本,运维成本都大大增加项目预算,因此在Private Cloud环境下需要一套快速实现服务治理的一套解决方案。


拥有可以用低代码的方式创建一个基于微服务集群的大型企业级应用,帮助企业快速应用最新的互联网技术,加速企业创新更好的支持敏捷快速迭代开发,提升整体IT管理能力。

应用范围


使用腾讯云微服务平台TSF来实现Mendix应用之间的服务治理。

如服务路由、服务限流、服务鉴权规则。用户可以通过配置、权重标签的形式进行细粒度的流量控制,实现灰度发布、就近路由、流量限制、访问权限控制等功能 。

TSF产品链接 https://cloud.tencent.com/document/product/649


TSF服务治理能力

Mesh 微服务平台(Tencent Service Mesh Framework,简称 TSF Mesh),基于 Service Mesh 的理念,为应用提供服务自动注册与发现、服务路由、鉴权、限流、熔断等服务治理能力,且应用无需对源代码进行侵入式改造,即可与该服务框架进行集成。了解TSF Mesh更多信息点击此处请查看

通过腾讯云的TSF微服务平台,提供Mendix开发的微服务之间治理的解决方案。


•    服务线上管理,实现服务可视化全生命周期管理

•    业务自定义标签,应用于用户自定义服务鉴权与服务路由规则

•    API列表与调试,方便用户API接口信息查看及远程调试

•    服务统计,提供服务运营监控数据,用于快速定位服务异常,发现系统瓶颈

•    服务鉴权,防止服务非法调用

•    服务限流 ,保护自身服务,防止流量击穿导致系统异常

•    服务路由,灰度发布,金丝雀发布,蓝绿发布

•    服务熔断,当下游的服务因为某种原因导致服务不可用或响应过慢时,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回。当下游服务恢复后,上游服务会恢复调用。

•    日志告警,快速发现系统异常。

•    实时日志,检测服务启动日志。

•    日志检索,快速发现系统异常。

•    服务依赖拓扑,展示应用服务全景图,用于快速定位服务异常,发现系统瓶颈。

•    调用链查询及详情,以接口维度快速定位服务异常,发现系统瓶颈。

•    弹性伸缩,保障服务高可用,减少人工操作,节约系统资源。

•    全链路灰度发布

•    分布式任务调度,定时,周期任务执行,工作流编排

•    分布式事务,跨多个库数据一致性保障。

•    微服务网关,全局服务的鉴权,服务路由,服务管理。



02

准备工作

TSF相关准备

为了顺利完成本次实践,您需要提前做好以下准备工作:

  • 登录腾讯云控制台,注册并实名认证后,登录腾讯云账号(前往链接:https://cloud.tencent.com)。

  • 确认腾讯云账户余额大于100元。

  • 若使用主账号进行登录,则默认已有所有资源的访问权限;若使用子账号进行登录,则需要提前授予相关权限,可前往(https://cloud.tencent.com/document/product/598/10600)查看如何使用CAM策略进行授权。

  •  一台可以访问公网的机器(可在腾讯云CVM页面进行购买),用于上传Mendix应用镜像。

  •  容器服务TKE。



03

Mendix镜像构建

通过Mendix Studio Pro 开发的多个微服务


如ilink.mpk、native.mpk项目包,两者相互调用彼此提供的服务。

传统的Rest API调用:http://ip:port



改造后的Rest API调用, http://service-name/,使用服务名字实现服务之间的相互调用。


Mendix结合腾讯TSF实现微服务治理

 

构建镜像

 


下载相关的脚本文件

git clone https://github.com/mendix/docker-mendix-buildpack.git

文件目录结构

├── Dockerfile

├── Dockerfile.rootfs.bionic

├── Dockerfile.rootfs.trusty

├── LICENSE

├── Makefile

├── README.md

├── scripts

│   ├── cleanupjdk

│   ├── compilation

│   ├── git

│   ├── startup

│   └── vcap_application.json

└── tests

    ├── docker-compose-azuresql.yml

    ├── docker-compose-k8s.yml

    ├── docker-compose-mysql.yml

    ├── docker-compose-postgres.yml

    ├── docker-compose-sqlserver.yml

    ├── stop.sh

└── test-generic.sh

将开发好的MPK包放到与docker-mendix-buildpack同级目录

Mendix结合腾讯TSF实现微服务治理


ilink.mpk和native.mpk为Mendix所开发的两个微服务。docker-mendix-buildpack-ilink和docker-mendix-buildpack-native是这两个app镜像构建,容器部署相关的脚本,主要文件包括Dockerfile、Makefile、startup启动文件。


Makefile文件修改


修改前:

Mendix结合腾讯TSF实现微服务治理


修改后:

 

Mendix结合腾讯TSF实现微服务治理

创建nativeService.tar.gz文件,内容如下

.

├── apis

│   └── native.yaml

├── logs

└── spec.yaml

##Spec.yaml文件主要是定义服务及健康检查相关的内容:apiVersion: v1kind: Applicationspec:  services:    - name: native      ports:        - targetPort: 8080          protocol: http      healthCheck:        path: /##native.yaml主要定义相关的api,不做强求,内容如下:
openapi: 3.0.0info:  version: "1.0.0"  title: native servicepaths:  /api/v6/user/create:    get:      responses:        '200':           description: OK '401':           description: Unauthorized        '402':           description: Forbidden        '403':           description: Not Found  /api/v6/user/account/query:    get:      responses:        '200':           description: OK        '401': description: Unauthorized        '402':           description: Forbidden        '403':           description: Not Found  /health:    get:      responses:        '200':           description: OK        '401':           description: Unauthorized        '402':           description: Forbidden        '403': description: Not Found



nativeService.tar.gz文件所处的位置如下所示

Mendix结合腾讯TSF实现微服务治理


同理创建ilinkService.tar.gz文件,内容如下

.

├── apis

│   └── native.yaml

├── logs

└── spec.yaml


##Spec.yaml文件主要是定义服务及健康检查相关的内容:apiVersion: v1kind: Applicationspec:  services:    - name: ilink      ports:        - targetPort: 8080          protocol: http      healthCheck:        path: /



修改Dockerfile文件

修改后的内容如下

 

Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理

修改script目录下的startup文件

在末尾添加内容:

os.system('mkdir -p /opt/tsf/app_config/apis')os.system('cp /opt/app/nativeService/spec.yaml /opt/tsf/app_config/')os.system('cp -r /opt/app/nativeService/apis /opt/tsf/app_config/')


 

Mendix结合腾讯TSF实现微服务治理

镜像构建

##make  get-sample     相当于解压文件到build文件夹##make  build-image    构建镜像并指定相应的镜像的tag


Mendix结合腾讯TSF实现微服务治理

需要关注dockerfile修改的文件内容

Mendix结合腾讯TSF实现微服务治理


当出现以下内容则构建成功

Mendix结合腾讯TSF实现微服务治理


腾讯云的镜像仓库功能存储构建的镜像


使用说明:

https://cloud.tencent.com/document/product/457/9118

 

Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理


将本地构建的镜像包上传到镜像仓库

 

Mendix结合腾讯TSF实现微服务治理


04

腾讯微服务平台

创建2台云服务器


具体的创建过程请参考:https://cloud.tencent.com/document/product/213/2936

Mendix结合腾讯TSF实现微服务治理

设置安全组

Mendix结合腾讯TSF实现微服务治理


添加相应的安全规则

Mendix结合腾讯TSF实现微服务治理


参考:

https://cloud.tencent.com/document/product/213/12452

登录微服务平台


打开控制面板,搜索TSF

Mendix结合腾讯TSF实现微服务治理


进入腾讯微服务平台TSF


Mendix结合腾讯TSF实现微服务治理


新建集群


Mendix结合腾讯TSF实现微服务治理


该容器集群是利用了腾讯云的容器服务TKE平台。

导入云主机,以下是已经绑定过的,选择之间创建好的2台云服务器即可

Mendix结合腾讯TSF实现微服务治理


集群信息

Mendix结合腾讯TSF实现微服务治理

包括两台云主机

新建应用

Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理


同理

Mendix结合腾讯TSF实现微服务治理


新建日志配置项

Mendix结合腾讯TSF实现微服务治理


配置

Mendix结合腾讯TSF实现微服务治理


添加发布规则

Mendix结合腾讯TSF实现微服务治理


新建部署组

Mendix结合腾讯TSF实现微服务治理


新建部署

Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理


在保存下一步之前需要检测是否有足够的资源

同理创建另外一个mendix-ilink

创建完成

Mendix结合腾讯TSF实现微服务治理


创建后端数据库服务


打开容器服务平台

Mendix结合腾讯TSF实现微服务治理


可以看到刚才在微服务平台创建好的集群点击集群id

Mendix结合腾讯TSF实现微服务治理


新建Deployment

Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理
MYSQL_USER=mendixMYSQL_PASSWORD=mendixMYSQL_DATABASE=mendixMYSQL_ROOT_PASSWORD=root
Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理


创建好的mysql数据库服务

Mendix结合腾讯TSF实现微服务治理


Pod管理

Mendix结合腾讯TSF实现微服务治理


为mysql再创建一个数据库实例

Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理
create  database  mxIlink;GRANT ALL ON *.* TO 'mendix'@'%';flush privileges ;


为微服务应用添加环境变量


编辑yaml文件

Mendix结合腾讯TSF实现微服务治理


为其中一个添加内容:

Mendix结合腾讯TSF实现微服务治理
- name: ADMIN_PASSWORD   value: Password1! - name: DATABASE_URL    value: mysql://mendix:mendix@ilink-mysql:3306/mendix##另外一个添加内容:- name: ADMIN_PASSWORD   value: Password1! - name: DATABASE_URL    value: mysql://mendix:mendix@ilink-mysql:3306/mxIlink##两者数据库实例不同即可


当pod的数量和期望一致时,则应用部署完成

Mendix结合腾讯TSF实现微服务治理


05

服务验证

由于之前我们设置主机端口的形式访问应用,两个应用的端口对外分别为30080,30089,通过任一台云服务器即可访问。

New  ->  POST

将新建的Task通过Rest 形式POST到另外一个微服务,GET会从另外一个微服务获取发送的数据,如下所示:

Mendix结合腾讯TSF实现微服务治理


另外一个微服务平台接收到的Task数据

Mendix结合腾讯TSF实现微服务治理

在构建镜像的时候提到了Rest API,传统的方式是ip+port,现在可以直接使用service-name的方式调用。

传统方式:

Mendix结合腾讯TSF实现微服务治理

现在的方式:

Mendix结合腾讯TSF实现微服务治理

同理相互调用

服务注册、服务发现等服务治理相关的功能由TSF提供。

Mendix结合腾讯TSF实现微服务治理




06

微服务治理


服务治理查询

Mendix结合腾讯TSF实现微服务治理

目前我们部署的服务都是一个实例,可通过容器服务平台进行弹性伸缩。

Mendix结合腾讯TSF实现微服务治理

服务依赖拓扑


Mendix结合腾讯TSF实现微服务治理


两个服务之间相互调用相关的依赖关系如上图所示

调用概览


Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理

调用链查询


Mendix结合腾讯TSF实现微服务治理


TraceId追踪

Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理

服务监控


Mendix结合腾讯TSF实现微服务治理

服务健康状况

Mendix结合腾讯TSF实现微服务治理

 延时状态码统计

Mendix结合腾讯TSF实现微服务治理

日志服务

由于之前已经创建了日志配置项,因此可以通过TSF的日志服务可以对日志进行检索。

Mendix结合腾讯TSF实现微服务治理


通过通过多种查询方式如基本查询、Lucene语法、正则表达式。如下所示:

Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理


更多Mendix信息,请访问以下链接:

Mendix官网:

https://www.mendix.com/demos/

Mendix行业解决方案:

https://solutions.mendix.com/

Mendix平台指南:

https://www.mendix.com/evaluation-guide/

Mendix动画展示:

https://www.mendix.com/demos/

Mendix课程学习:                            https://gettingstarted.mendixcloud.com/link/home

优酷课程学习:

https://i.youku.com/mendix



往期推荐





● 



Mendix结合腾讯TSF实现微服务治理
Mendix结合腾讯TSF实现微服务治理

带你开启10倍速企业级应用开发




我知道你  在看  哦