• Zeus,一个可以快速使用的微服务组件


    去年(上周)一直准备着做一个分布式微服务的组件,可以让使用者用最简单的方式引入,只需要使用简单的注解就能够使用。

    用一点一点的空闲时间终于堆出来一个暂时可用的zeus-1.0版本。

    Zeus,意为宙斯,奥林匹斯十二主神之首,Zeus目前既定的主要功能是服务发现,负载均衡,服务调用,API监控,配置中心,服务治理,服务容错。

    目前完成的功能有服务注册,服务发现,API监控以及RPC调用。

    Zeus的使用方式非常简单,你只需要在你的项目中引入jar包,或者maven地址就可以直接使用了,maven地址之后会用GitHub仓库的方式来分享出来。

    Zeus项目地址:

    https://github.com/CasterWx/Zeus

    Zeus-Jar包下载地址:

    https://github.com/CasterWx/Zeus/releases

    (希望可以帮忙推广一下,这个项目对我很重要)

    Rpc远程调用

    存在一个server-1,地址为localhost:8080,还存在一个server-2,地址为localhost:8090。

    server-1中有一个方法,假如它的作用是查询数据库返回用户信息,我们就可以给这个service类加上@RpcService(需要引入zeus-rpc.jar)方法来启动远程调用。

    在server-2中如果我们想要调用server-1的doHello方法获取用户信息,就可以创建一个简单的RpcClient来调用。

    此时访问这个/hello接口,可以得到远程接口返回的json结果。

    {"code":0,"data":["user-1","user-2","user-3"],"requestId":"1"}
    

    RpcRequest中参数为消息ID,实例类,方法,参数类型列表,参数值列表。

    服务注册

    引入zeus-client(client.jar)模块,在项目中添加@ZeusRegistry注解即可。

    @ZeusRegistry注解有四个参数。

    • registryName :命名空间(集群管理)
    • zkAddr :zookeeper地址
    • serverName :服务名称
    • serverAddr :服务注册地址

    目前使用zookeeper来做注册中心,是因为zookeeper本身比较强大,后期等到项目中netty模块优化传输之后会去掉zookeeper。

    服务发现

    服务发现目前开放了两个接口,一个是获取所有集群,另一个是获取指定集群下的所有服务。

    使用上面的服务注册标签@ZeusRegistry注册了你的服务之后,就可以调用服务中心的 /v1/node 接口来发现服务了。

    Zeus-Server默认使用了5454端口,调用接口分别如下。

    http://localhost:5454/v1/node/namespaces

    requestMethod : Get

    获取所有集群名。

    {
      "code":200,
      "message":"OK",
      "data":[
        "user-center2","user-center1","user-center3"
      ]
    }
    

    http://localhost:5454/v1/node/server?namespace=param

    requestMethod : Get

    获取指定集群下的所有服务节点信息。

    response

    {
      "code":200,
      "message":"OK",
      "data":[{
        "nameSpace":"user-center1",
        "serverName":"server-1",
        "data":"126",
        "path":"/registry/user-center1/server-1"
        }]
      }
    

    API监控

    为你的方法或是API添加@FlowMonitor(name)注释,你的该方法访问将会得到记录。

    例如在之前rpc调用的接口上添加一个FlowMoniter就可以监控rpc的次数以及时间点了。

    数据会暂时先放在guava缓存中,定量会使用异步的方式上传到zeus-server做报表处理,这一部分暂时还没有做。

    还有很多功能正在开发中~

  • 相关阅读:
    Hibernate映射Map属性2
    Ajax向Controller发送请求并接受数据需要注意的一个细节
    设置 jsp 表格相邻两行的颜色不一样
    Hibernate映射Map属性
    自己写的爬虫
    在一个jsp页面中引用另一个jsp文件的路径的问题
    state设计原则
    项目图标库怎样选择
    一些有用的插件
    Hook
  • 原文地址:https://www.cnblogs.com/LexMoon/p/zeus01.html
Copyright © 2020-2023  润新知