HttpPostman文档

HttpPostman自动路由组件

github地址:https://github.com/shang7053/HttpPostman

码云地址:

说明

自动路由组件,根据访问域名自动路由到真实服务上,无需事先配置,启动即可发现服务。当某一真实路径不可用时,自动移除不可用。支持轮询,直到请求成功或者全部不成功(比较耗时)。支持配置超时时间。
主要特性如下:

  • 路由模块使用node.js,基于事件驱动,最大支持每秒24000次请求,相比tomcat、nginx拥有更高的性能
  • 使用zookeeper作为服务注册中心,启动将注册信息加载到内存,并通过watcher机制进行同步,最大化减少路由模块响应耗时
  • 支持权重策略,解决硬件差异下公平路由
  • 支持GET、POST、PUT、DELETE
  • 支持表单提交和rest
  • 支持返回json、xml

架构图

流程图

网络结构图示例

模块

主要分两个部分,路由模块和sdk模块。
路由模块负责处理转发所有请求。
sdk负责注册服务信息。
中间依赖redis做注册中心。

声明:

  • sdk目前仅支持java,其他语言请自行拓展
  • 现已测试各类接口程序,但未测试返回页面的门户、管理系统等(不建议此类场景使用)

最佳实践

  • 适合http接口类应用
  • 适合k8s或任何自动伸缩导致接口应用IP经常变化的环境下使用
  • 目标不是替代任何软件,而是支持动态链接到可用的接口程序

路由模块安装

推荐使用pm2运行,推荐按CPU核数集群运行,不推荐单机单节点运行

1、下载源码

git clone https://github.com/shang7053/autorouter.git

2、执行启动命令

sh bin/start.sh

配置

进入conf文件夹,编辑arconf.json

{
  "port":3000,
  "polling":true,
  "redisDeployType":"cluster",
  "zkAddress":"172.16.40.4:2181,172.16.40.5:2181",
  "zkBasePath":"/ar/domains",
  "httpTomeOut": 2000,
  "log4js": {
    "appenders": {
      "console": {
        "type": "console"
      },
      "log_date":{
        "type": "dateFile",
        "filename": "logs/system.log",
        "alwaysIncludePattern": true,
        "pattern": "-yyyy-MM-dd-hh",
        "encoding": "utf-8"
      }
    },
    "categories": {
      "default": {
        "appenders":["console","log_date"],
        "level": "debug"
      }
    }
  }
}

sdk使用说明

进入到sdks->java->ar_client,执行

mvn clean install

然后在项目添加到pom.xml

<dependency>
	<groupId>com.scc</groupId>
	<artifactId>ar_client</artifactId>
	<version>0.0.1</version>
</dependency>

配置支持三种方式,properties、spring bean、api

arconf.properties

zk.address=172.16.40.4:2181,172.16.40.5:2181
#zk.basePath=/ar/domains
service.domain=datasyc.voole.com
#service.ip=10.5.5.1
service.port=8080
service.weight=1
service.register.interval=10

spring bean

<bean class="com.scc.ar.client.core.AutoRegistService" init-method="init" destroy-method="close">
	<property name="zkAddress" value="172.16.40.4:2181,172.16.40.5:2181" />
	<property name="serviceDomain" value="localhost" />
	<property name="serviceRegisterInterval" value="10" />
	<!-- 默认自动获取本机IP <property name="serviceIp" value="127.0.0.1" /> -->
	<property name="servicePort" value="8080" />
	<property name="serviceWeight" value="1" />
</bean>

api

AutoRegistService service = new AutoRegistService();
service.setZkAddress("172.16.40.4:2181");
service.setServiceDomain("www.baidu.net");
service.setServicePort("80");
service.setServiceWeight("2");
service.setServiceRegisterInterval("100");
service.init();

 

转载于:https://my.oschina.net/shyloveliyi/blog/1606161

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值