美文网首页
[Soul 源码之旅] 1.8 Soul插件初体验 (Tars)

[Soul 源码之旅] 1.8 Soul插件初体验 (Tars)

作者: AndyWei123 | 来源:发表于2021-01-28 01:35 被阅读0次

    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,刚进去需要设置密码。

    tars
    如图我们看我们的注册中心已经启动。

    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")));
    

    相关文章

      网友评论

          本文标题:[Soul 源码之旅] 1.8 Soul插件初体验 (Tars)

          本文链接:https://www.haomeiwen.com/subject/zyozzktx.html