学习
实践
活动
工具
TVP
写文章

Titan Framework 项目部署

介绍

本文用来介绍Titan Framework的使用和下载, Titan Framework的多数据库支持,各个微服务之间的调用,微服务的配置与部署。

Titan Framework依赖包的下载跟使用

Titan Framework包可以做在Titan Framework PaaS平台上进行下载,提供各个版本。

使用如下代码把Titan Framework 包加到本地maven仓库中:

在微服务的pom文件中添加Titan Framework 包依赖:

Titan Framework多服务的使用

Titan Framework 单个微服务结构图:

在Titan Framework中,每个微服务的核心工程结构分为Controller、Entity、Event、Launch。

1. Controller包中又可以分割为两个具体逻辑组件,分别是具体实现API配置的Controller与进行接入层逻辑控制的Handler。对于Controller的Handler包,我们建议将一些接入层的检查放在这里,例如Token有效性或者Json参数的格式验证。

2. Entity包主要是本微服务中使用到的数据对象实体定义。例如,传统结构中的DTO定义就可以放在Entity文件夹下。

3. Event包是Titan微服务之间进行相互调用的入口,在Event文件夹下,我们常常放置EventHandler,专门用来提供跨微服务的通讯支持。例如,LoginService需要调用UserService进行用户信息校验。此时UserService就可以提供一个VerifyUserInformationEvent的内部接口,用来和LoginService进行跨微服务协作。对于Event包,我们建议将很多业务逻辑放在里面。

4. Launch包中主要是微服务启动参数的配置与启动器的配置。Titan Framework每个微服务内置Jetty容器,使用时无需单独部署其他容器。在启动时,Titan Framework的微服务直接通过类似Java Application的方式进行启动,即Java -jar serice.jar。

在同台服务器上使用Titan Framework中多个微服务,需创建application.properties文件,目录\resources,因为Titan Framework中每个微服务使用的都是默认端口7070。

resources目录如下:

application.properties文件:

如未添加报如下错误:

集群使用还需修改**/project/conf/cluster.properties工具包。

cluster.local.port端口不能相同,

1. cluster.system.name使用同一名称;

2. cluster.seeds默认自己,A,B,C同在一个集群下;

A服务

B服务

C服务

A,B,C,D四个微服务的项目,B,C,D三个微服务都去连接A服务,这样就构建成一个集群,在这个集群中BCD之间是没有连接的,但是他们都连接了A服务,所以他们之间也是可以进行通信的。

如下图:

B,C,D连接A服务打印信息:

B,C,D断开连接A服务打印信息:

Titan Framework中API的编写

controller定义,系统默认接收Json body ,基于JsonToEntity模式进行对象转换,调用方法如下:JsonParserFactory.getParser().getObject(body, TplAppEntity.class);

Command Handler定义

Command Handler是用来响应API (Controller的部分的请求),基于类上的注解在启动时自动完成handler与Command的注册过程。

Titan Framework的 Command模型

Titan Framework通过Command将Controller与对应的CommandHandler进行关联。在上面的例子中,我们可以看到POST请求将会被getCreateCommand方法捕获,捕获后通过创建一个Create类型的Command将具体的请求内容提交到一个CommandHandler。

具体的绑定逻辑关键点在于Command类型以及Command中绑定的Entity类型。在上面的例子中,getCreateCommand提交了一个Create的command。对应的CommandHandler(注意:必须通过@CmdHandler注释进行标注,否则Titan Framework无法有效识别)实现了一个CommandHandler>的接口。在这个情况下,Titan Framework会在底层通过Create这个Command类型完成Controller层与CommandHandler层的匹配。

作为Titan Framework的高阶用法,我们在getCreateCommand中可以通过serviceName(getCreateCommand有两个参数,分别是serviceName与T body),分离出不同的分支,向多个不同的CommandHandler发送不同的Command。这一点,大家可以在实际使用中进一步探索。

Titan Framework的微服务相互调用

在这里,我们假设有两个Titan微服务,其中A微服务作为API接入服务,B微服务作为业务逻辑处理服务。

A微服务与B微服务之间的通讯就是由上面说到的Event进行驱动。例如A可以在Controller的Handler主键中调用远程请求,将特定的Event发送给B微服务。B微服务通过EventHandler捕获这个特定的远程请求。

handler代码如下:

B服务接收event代码如下:

Titan Framework中DataSource的使用

Titan Framework提供了Repository包,集成了关系型与非关系型数据库的驱动。

mysql

Respository集成:

/project/conf/mysql.properties代码:

MongoDB

Respository集成:

/project/conf/mongoDB.properties代码:

Redis

Respository集成:

/project/conf/redis.properties代码:

Titan Framework中log日志的使用

Titan Framework中使用的包是slf4j,需要把slf4j包配置pom文件中。

pom文件配置如下:

log日志的使用:

Titan Framework的打包与服务器部署

Titan Framework的打包:

第一步:在微服务的pom文件中添加如下代码:

第二步:打开cmd,进入到项目目录,运行命令mvn clean install,cd :\MyEclipse10Workspace\demo\demo,运行命令mvn clean install。打包生成的文件会在target下生成.zip文件。

Titan Framework服务器部署:

第一步:把打包生成的.zip文件上传至服务器解压,把conf配置添加到解压文件demoa-titandemo-1.0-SNAPSHOT-bin\demoa-titandemo-1.0-SNAPSHOT\conf路径下。

如图:

第二步:把微服务中的spring配置文件cope到\demoa-titandemo-1.0-SNAPSHOT路径下。

第三步:修改conf目录下cluster.properties文件里的IP地址,修改成服务器IP地址

第四步:java -jar **.jar 启动服务,未报错出现如下日志服务启动成功。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180628A0JE8K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券