Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架TAF(Total Application Framework),目前支持C++,Java,PHP,Nodejs,Go语言。该框架为用户提供了涉及到开发、运维、以及测试的一整套解决方案,帮助一个产品或者服务快速开发、部署、测试、上线。 它集可扩展协议编解码、高性能RPC通信框架、名字路由与发现、发布监控、日志统计、配置管理等于一体,通过它可以快速用微服务的方式构建自己的稳定可靠的分布式应用,并实现完整有效的服务治理。
tars 相对于 dubbo 的最大优势在于跨语言,还有就是直接集成了监控、日志统计、配置管理功能,真正做到一站式开发,但是同时配置也相对变得复杂。
1.8.4.1 Tars 环境准备
Tars 的安装部署相比 Nacos SofaRegistry Zookeeper 等插件相对复杂,他是一种由C++ 编写的,友情提示,在开始安装前需要先安装Mysql 数据库 CMake 和 nodejs 具体流程可参考 链接 。
最后执行以下命令启动:
./linux-install.sh **** tars2015 eth0 false false root 3306
这里的 *** 是对应 mysql 的 ip tars2015 是密码 root 是用户名 3306 是端口。
运行起来后我们访问链接 http://localhost:3000,刚进去需要设置密码。
如图我们看我们的注册中心已经启动。
1.8.4.2 souladmin & soulBootstrap 配置
首先我们在 admin 中启动 tars 插件。
admin
接着我们在 bootstrap 需要引入依赖。
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-plugin-tars</artifactId>
<version>${project.version}</version>
</dependency>
1.8.4.3 Tars Client 配置
首先我们将 soul-examples/soul-examples-tars/src/main/resources/SoulExampleServer.SoulExampleApp.config.conf 这个配置文件的 ip 改成我们自己 网桥 en0 上的 ip 非 127.0.0.1 注意。
然后在 yaml 文件引入如下配置信息
soul:
tars:
adminUrl: http://localhost:9095
contextPath: /tars
appName: tars
ipAndPort: 127.0.0.1:21715
直接启动会抱如下错误。
com.qq.tars.server.config.ConfigurationException: error occurred on load server config
at com.qq.tars.server.config.ConfigurationManager.loadServerConfig(ConfigurationManager.java:113)
at com.qq.tars.server.config.ConfigurationManager.init(ConfigurationManager.java:57)
at com.qq.tars.server.core.Server.loadServerConfig(Server.java:90)
at com.qq.tars.server.core.Server.<init>(Server.java:42)
at com.qq.tars.server.core.Server.<clinit>(Server.java:38)
at com.qq.tars.spring.bean.PropertiesListener.onApplicationEvent(PropertiesListener.java:37)
at com.qq.tars.spring.bean.PropertiesListener.onApplicationEvent(PropertiesListener.java:31)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:76)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53)
at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:345)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at org.dromara.soul.examples.tars.SoulTestTarsApplication.main(SoulTestTarsApplication.java:39)
Caused by: java.lang.NullPointerException
at java.io.FileInputStream.<init>(FileInputStream.java:130)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at com.qq.tars.common.util.Config.parseFile(Config.java:211)
at com.qq.tars.server.config.ConfigurationManager.loadServerConfig(ConfigurationManager.java:63)
... 17 more
The exception occurred at load server config
从根据日志信息我们找到报错的行,这个是 tars client 端根据系统参数找配置文件位置。即如下注解没有起到配置文件路径的作用,@SoulTarsService(serviceName = "SoulExampleServer.SoulExampleApp.HelloObj") 目前正在分析源码,待更新。。。
ServerConfig cfg = new ServerConfig().load(Config.parseFile(System.getProperty("config")));
网友评论