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

用一点一点的空闲时间终于堆出来一个暂时可用的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做报表处理,这一部分暂时还没有做。

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

Zeus,一个可以快速使用微服务组件的更多相关文章

  1. Re:从0开始的微服务架构--(二)快速快速体验微服务架构?--转

    原文地址:https://mp.weixin.qq.com/s/QO1QDQWnjHZp8EvGDrxZvw 这是专题的第二篇文章,看看如何搭建一个简单模式的微服务架构. 记得好久之前看到一个大牛说过 ...

  2. Go语言micro之快速搭建微服务

    背景 go-micro给我们提供了一个非常便捷的方式来快速搭建微服务,而且并不需要提前系统了解micro,下面用一个简单的示例来快速实现一个服务. 创建Proto文件 因为我们要做微服务,那么就一定有 ...

  3. 通过GeneXus如何快速构建微服务架构

    概览 “微服务”是一个非常广泛的话题,在过去几年里,市面上存在着各种不同的定义. 虽然对这种架构方式没有一个非常精确的定义,但仍然有一些概念具有代表性. 微服务有着许多围绕业务能力.自动化部署.终端智 ...

  4. 在 Docker 上运行一个 RESTful 风格的微服务

    tags: Microservice Restful Docker Author: Andy Ai Weibo:NinetyH GitHub: https://github.com/aiyanbo/d ...

  5. SpringCloudAlibaba 微服务组件 Nacos 之配置中心源码深度解析

    大家好,这篇文章跟大家聊下 SpringCloudAlibaba 中的微服务组件 Nacos.Nacos 既能做注册中心,又能做配置中心,这篇文章主要来聊下做配置中心时 client 端的一些设计,主 ...

  6. 教你如何用Nginx搭建一个安全的、快速的微服务架构

    今天我们要谈论微服务以及如何使用Nginx构建一个快速的.安全的网络系统.最后,我们将向您展示一个使用Fabric模式如何非常快速和轻松地构建一个微服务的demo. 在我们探讨Fabric模式之前,我 ...

  7. SpringBoot 快速构建微服务体系 知识点总结

    可以通过http://start.spring.io/构建一个SpringBoot的脚手架项目 一.微服务 1.SpringBoot是一个可使用Java构建微服务的微框架. 2.微服务就是要倡导大家尽 ...

  8. 利用SpringCloud搭建一个最简单的微服务框架

    http://blog.csdn.net/caicongyang/article/details/52974406 1.微服务 微服务主要包含服务注册,服务发现,服务路由,服务配置,服务熔断,服务降级 ...

  9. Springboot揭秘-快速构建微服务体系-王福强-2016年5月第一次印刷

    JavaConfig项目: spring IOC有一个非常核心的概念——Bean.由Spring容器来负责对Bean的实例化,装配和管理.XML是用来描述Bean最为流行的配置方式.Spring可以从 ...

随机推荐

  1. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  2. 跳出手掌心--如何立即触发UIButton边界事件

    http://www.cocoachina.com/ios/20150611/12082.html 最近在使用UIButton的过程中遇到一个问题,我想要获得手指拖动button并离开button边界 ...

  3. @codeforces - 1205E@ Expected Value Again

    目录 @description@ @solution@ @part - 1@ @part - 2@ @part - 3@ @solution@ @details@ @description@ 给定两个 ...

  4. @codeforces - 418D@ Big Problems for Organizers

    目录 @description@ @solution@ @accepted code@ @details@ @description@ n 个点连成一棵树,经过每条边需要花费 1 个单位时间. 现给出 ...

  5. Laravel如何引用第三方(自定义)库

    想做一个网页抓取的功能,底层使用php的laravel框架. 这里使用phpQuery库来实现网页抓取,这里不做介绍. 需要了解的可以百度,或者等我填坑. 下载最新版本可以前往https://code ...

  6. CREATE OR REPLACE FUNCTION

    CREATE OR REPLACE FUNCTION SF_Taishou_Ksai_Date(v_receiptNum IN CHAR,                                ...

  7. AtCoder Beginner Contest 075 C Bridge(割边)

    求割边个数.Tarjan的板子.. #include <bits/stdc++.h> using namespace std; const int MAXN = 55; const int ...

  8. html--多媒体文件

    添加多媒体文件 1.添加多媒体文件标记 <embed src="" width="" height=""></embed& ...

  9. 2005年NOIP普及组复赛题解

    题目涉及算法: 陶陶摘苹果:入门题: 校门外的树:简单模拟: 采药:01背包: 循环:模拟.高精度. 陶陶摘苹果 题目链接:https://www.luogu.org/problem/P1046 循环 ...

  10. ElasticSearch从不懂到会用1—安装篇

    连续加班近一个多月,项目终于告一段落了,也腾出时间写一写项目中用到的东西.在这个项目中,我负责的主要是多种业务场景下的数据查询和搜索,其中搜索用到了ElasticSearch搜索引擎.下面主要围绕El ...