Coder Social home page Coder Social logo

webankblockchain / weevent Goto Github PK

View Code? Open in Web Editor NEW
634.0 26.0 116.0 39.12 MB

Event-Driven Architecture Based on Blockchain.基于区块链的事件驱动架构

Home Page: http://fintech.webank.com/weevent

License: Other

Java 80.29% Shell 1.95% JavaScript 4.96% HTML 0.28% Vue 9.46% CSS 0.57% Python 0.18% Go 0.32% Solidity 0.41% Less 1.59%
message-queue event-driven blockchain websocket stomp mqtt iot-hub

weevent's Introduction

中文 | English

image

CodeFactor Codacy Badge Build Status codecov Latest release Maven Central Documentation Status License

什么是WeEvent?

WeEvent是一套分布式事件驱动架构,实现了可信、可靠、高效的跨机构、跨平台事件通知机制。

WeEvent由微众银行自主研发并完全开源,秉承分布式商业模式中对等合作、智能协同、价值共享的设计理念,致力于提升机构间合作效率,降低合作成本,同时打通应用程序、物联网、云服务和私有服务等不同平台,最终在不改变已有商业系统的开发语言、接入协议的情况下,做到跨机构、跨平台的事件通知与处理。
WeEvent官网

快速入门

WeEvent支持三种安装方式:Docker镜像Bash一键脚本进阶安装

Docker镜像安装

$ docker pull weevent/weevent:latest; docker run -d -p 8080:8080 weevent/weevent:latest /root/run.sh

Bash一键安装

下载并且解压安装包,如weevent-1.6.0.tar.gz。在解压目录中执行安装脚本。

$ ./install-all.sh -p /usr/local/weevent/

功能体验

通过浏览器即可体验事件发布等基本功能,如发布事件。更多功能,请参见WeEvent接入

用户文档

WeEvent在线文档

项目贡献

WeEvent爱贡献者!请阅读贡献文档,了解如何贡献代码,并提交你的贡献。

希望在您的帮助下WeEvent继续前进。

社区

weevent's People

Contributors

anyspa avatar bihe0832 avatar blankrain avatar caseone avatar chent57 avatar chirdxing avatar cristicvictory avatar erichua23 avatar eveagle avatar idioticmadman avatar jackqqxu avatar jevyma avatar maxteng6 avatar ningso avatar puremilkfan avatar reed-hong avatar saintping avatar shubiaolin avatar weidetian10 avatar wewebsterchen avatar wwwanhai avatar yangaobiao avatar yangzhenlong avatar zjy142214 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

weevent's Issues

Governance的配置文件格式从.yml改成.properties

Is your feature request related to a problem? Please describe.
Governance的进程配置文件是application.yml格式,一键脚本等自动化bash处理程序编辑不方便。

Describe the solution you'd like
和Broker进程一致。改为.properties格式。

主动探测区块链节点版本

Is your feature request related to a problem? Please describe.
WeEvent部署的时候,需要用户填区块链版本。fisco.properties#version和config.properties#fisco-bcos.version。服务初始化的时候,并没有判断节点的版本是否一致。

Describe the solution you'd like
WeEvent服务初始化的时候,通过web3sdk的接口获取节点后台版本号。和用户配置的做一个比对。
如果发现异常,服务应该给出友好的提示,然后退出。
WeEvent初始化时,通过接口https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html#getclientversion

Governance页面适配Safari浏览器

Is your feature request related to a problem? Please describe.
当前的Governance交互只考虑了支持Chrome,还没支持其他浏览器。

Describe the solution you'd like
Mac用户也比较多,Governance管理端的页面也需要适配该系统自带的Safari浏览器。

除了支持的Chrome和Safari浏览器外,其他的浏览器访问时显示的弹出不支持的提示。

当用户没有安装WeBase的时候,优化Governance页面的提醒

Is your feature request related to a problem? Please describe.
当用户没有安装WeBase的时候,区块链节点相关的页面都无法正常使用。

Describe the solution you'd like
尽量通过Broker访问区块链。
当用户没有安装WeBase时,区块链节点相关的页面需要更加友好的提示。
区块链节点相关的信息:
1、当前节点、pbftview及版本信息
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html#getnodeidlist
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html#getclientversion
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html#getpbftview
2、当前交易数量和块高、待打包的交易数量
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html#gettotaltransactioncount
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html#getpendingtxsize
3、遍历区块和交易
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html#getblockbynumber
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html#gettransactionreceipt
注意这里要特别关注logs字段。可能的话,解析出来。

package.sh应该使用项目自带的gradle

Is your feature request related to a problem? Please describe.
WeEvent的打包脚本package.sh使用的是系统自带的gradle,对环境依赖比较大。

Describe the solution you'd like
WeEvent工程有自带gradle配置,打包脚本package.sh应该使用项目内的配置。

CI集成测试增加以FISCO-BCOS1.3为基础的测试用例

Is your feature request related to a problem? Please describe.
WeEvent默认支持FISCO-BCOS2.0,现有的测试用例都是基于FISCO-BCOS2.0的。FISCO-BCOS 1.3和2.0依赖的是不同的jar包和api。需要有用例覆盖到这一块。

Describe the solution you'd like
增加能覆盖到FISCO-BCOS 1.3的测试用例。这些用例应该和当前用例一样,是能够在集成环境里自动执行的。

weevent-client.jar包中发布事件改由STOMP协议实现

Is your feature request related to a problem? Please describe.
weevent-client.jar的实现有两种协议,事件订阅相关的功能时STOMP,事件发布等其他功能是JsonRPC。
事件发布也是STOMP的核心功能。通过JsonRPC实现不太符合习惯。

Describe the solution you'd like
协议以STOMP为主,JsonRPC为辅。
STOMP协议定义过功能,比如发布订阅都使用STOMP协议实现。STOMP协议没有涉及的功能才使用JsonRPC协议补充实现。

优化WeEvent安装流程实现在FISCO上免配置部署

Is your feature request related to a problem? Please describe.
WeEvent部署的时候,有一个关键配置项fisco.properties#topic-controller.address需要随部署的实际情况修改。而且在多群组的时候,这个配置项的格式还比较复杂,配置有点麻烦。不适合自动化和规模部署。

Describe the solution you'd like
1、FISCO2.0有内置的CRUD表存储,是Key-Value结构,而且全局唯一的。
https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-2.0/en/docs/manual/smart_contract.html
这个Table可以存放业务配置,方便部署。
第一个部署的WeEvent节点,部署系统合约后,将值写入Table。
部署其他WeEvent节点发现Table里已经有值,则不用重新部署系统合约。直接从Table里取值就可以。
Web3SDK有接口封装org.fisco.bcos.web3j.precompile.crud.CRUDService
注意:insert接口允许插入重复key。

2、在FISCO1.3里没有CRUD表,有CNS系统合约,同样的是Key-Value结构,可以达到同样的目标。
https://fisco-bcos-documentation.readthedocs.io/zh_CN/release-1.3/docs/features/CNS/README.html

统一各协议的准入账号配置

Is your feature request related to a problem? Please describe.
WeEvent支持多种协议接入。现在MQTT、STOMP都支持账号密码验证,并且是独立的配置项。
如weevent.properties中配置项
stomp.user.login/stomp.user.passcode
mqtt.user.login/mqtt.user.passcode
不同的配置项给安装部署到来一定的复杂度。同时有的协议入口开启验证,有的协议入口可以关闭验证。带来一定的安全隐患。

Describe the solution you'd like
各协议入口MQTT、STOMP、Restful、JsonRPC使用统一的配置项
user.login/user.passcode
统一配置,统一认证

日志句柄绑定冲突

Describe the bug
服务里有两个日志句柄,并且tomcat的部分日志没有记录到日志文件里。

To Reproduce
启动服务
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/matthewliu/.gradle/caches/modules-2/files-2.1/org.apache.logging.log4j/log4j-slf4j-impl/2.11.2/4d44e4edc4a7fb39f09b95b09f560a15976fa1ba/log4j-slf4j-impl-2.11.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/C:/Users/matthewliu/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-log4j12/1.7.25/110cefe2df103412849d72ef7a67e4e91e4266b4/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Expected behavior
解决日志冲突,所有的日志都统一记录到日志文件

批量订阅对eventid的处理有缺陷

Describe the bug
使用批量订阅接口
String IConsumer::subscribe(String[] topics, String groupId, String offset, String interfaceType, ConsumerListener listener) throws BrokerException;
当有多个主题,并且在offset代表的当前块里都有事件的时候,会出现某些事件漏通知。

To Reproduce

  1. 有两个主题a和b,在块高100都有发布事件。比如
    a: 87428fc5_10_100、87428fc5_11_100、b: 0263829_3_100
  2. 然后通过offset批量订阅a和b,offset=87428fc5_10_100
  3. 通知事件里只有a的87428fc5_11_100,没有b的0263829_3_100

Expected behavior
这种情况下,在块高100里,应该会通知87428fc5_11_100和0263829_3_100。

Additional context
原因是setOffset的时候,分解出来了offset里的seq,然后通过NotifyTask.lastEventSeq来过滤数据。但是这个值是主题内有效,对于其他主题是无效的。

实现实时流处理,支持IFTTT规则引擎

Is your feature request related to a problem? Please describe.
支持实时流处理。满足IoT等业务的IFTTT事件流。
一期的action可以只支持发布到其他主题/存入RMDB两种。

Describe the solution you'd like
1、新增分布式的Event Processor模块
2、在Governance页面上支持IFTTT的在线编辑。
3、支持业务数据字段抽取的前提是:在创建事件主题的时候,通过自定义属性weevent-format告诉WeEvent数据格式。比如weevent-format=json。

STOMP协议支持tag级别的事件发布和订阅

Is your feature request related to a problem? Please describe.
支持更细粒度的事件发布和订阅。
现有的发布订阅是基于某个主题的,需要支持更细粒度的订阅。比如订单是一个主题。创建订单动作可以定义为一个tag,取消订单是一个tag,删除订单是一个tag,等等。这些主题相关的动作其实大部分情况下是同一个业务服务处理,按相关性合并主题有利于降低业务程序的复杂度。也有利于维持系统内主题数量的稳定。

Describe the solution you'd like
使用自定义属性来支持这个特性。
新增扩展参数比如“weevent-tag”,发布和订阅接口都加入这个参数以支持tag级别的订阅。
1、发布的时候加入tag,tag会随事件一起保存在区块链上。
#“create”是业务自定义tag名
externs.put("weevent-tag", "create");
publish(“phone.bill”, content,externs);

2、订阅的时候带上这个tag,则会收到这个tag相关的通知。没有入tag还是收到这个主题的所有通知
#“create”是业务自定义tag名。如果没有加tag订阅,则收到所有tag类型,也就是老的订阅逻辑
externs.put("weevent-tag", "create");
subscribe(“phone.bill”, externs, listener);

合并Nginx安装脚本的build-nginx.sh和install-nginx.sh

Is your feature request related to a problem? Please describe.
1.0版本中的Nginx模块,快速安装和详细安装的tar.gz目录结构略有差别,造成有大同小异的两份安装脚本。

Describe the solution you'd like
优化快速安装脚本install-nginx.sh和详细安装脚本build-nginx.sh。使其能够大部分共用。

提供Topic合约平滑升级支持

Is your feature request related to a problem? Please describe.
WeEvent现在有三个合约,TopicController.sol、TopicData.sol、Topic.sol。
其中TopicController.sol和TopicData.sol是代码级别的依赖,TopicData是没法单独升级的。
TopicData只是一个简单map,也没有必要升级。
真正要升级的是Topic合约。这里涉及到主题和事件逻辑。

Describe the solution you'd like
1、将TopicData逻辑合并到TopicController。
2、TopicController新增setTopicInfo接口,支持设置升级后的Topic。
3、TopicController记录当前系统内使用的Topic合约是哪个版本号。并且在getTopicInfo接口里返回。
4、提供bash脚本upgrade_topic.sh支持Topic的平滑升级。upgrade_topic.sh会将TopicController内所有的Topic重新部署,并且将新地址通过setTopicInfo更新回TopicController。
这样用户发布和订阅逻辑都不会受到影响。
注意要考虑upgrade_topic.sh执行时间长,中途可能失败的情况。中途失败,系统恢复后,继续调用upgrade_topic.sh要能完成升级。

JMeter性能测试

Is your feature request related to a problem? Please describe.
WeEvent性能测试代码没有归档到github。

Describe the solution you'd like
通过给JMeter写Java插件,来测试weevent-client.jar中的发布订阅两大功能。
每次新版本发布前,需要用这个测试基准来评估服务性能。

Governance新增主题维度的历史统计数据

Is your feature request related to a problem? Please describe.
Governance只有以交易为维度的历史统计数据。但是WeEvent业务是以主题为维度的。需要统计这部分的历史数据供参考。

Describe the solution you'd like
在Processor事件规则引擎的基础上,内置一个面向全部主题的规则。
将群组ID、块高、当前时间、主题、事件ID,等数据导出到Governance的数据库。
然后将历史数据的统计分析在页面上展示出来。
图表的定义:
X为日期轴,Y轴为事件数量。每个主题为一条折线。
默认显示事件数量TOP 5的主题折线。有下拉框可以选择多个主题。
默认显示最近7天的数据,有日期选择框选择开始和起始日期。
简单图例如下:
image

weevent-processor 增加一个最佳实践实例

Is your feature request related to a problem? Please describe.
The feature relate to that issue (#104) , and enhance the sample which can help people understand the IFTTT or CEP .

Describe the solution you'd like
Add the quick start sample and documentations.

  • sample Spring-boot project.
  • the documentations can help people how to quick start that project.

支持事件实时通知模式

Is your feature request related to a problem? Please describe.
WeEvent 1.0.0为上链存储优先,然后再通知订阅的消费者。
由于区块链上链需要共识,带来通知有1秒左右的延迟,这在某些场景下是无法接受的。这种情况下,需要支持实时通知模式。

Describe the solution you'd like
支持事件实时通知模式。
用户在创建主题的时候,可以选择模式:是上链存储优先(默认),还是实时通知优先,或者干脆只通知不上链。
实时通知模式下,WeEvent优先将事件通知到消费者,再来做上链存储的动作。
系统Topic Control合约里需要记录主题的选择的模式。
上链优先模式下,也可以通过区块链的block event事件,来加快数据的检索。

STOMP和Java SDK支持批量订阅

Is your feature request related to a problem? Please describe.
STOMP和Java SDK现在只支持订阅单个主题以及通过通配符订阅类似的主题。
还不支持一次订阅多个主题。

Describe the solution you'd like
Java SDK重载订阅接口,使用参数String[]允许用户可以输入一个主题列表,一次订阅多个主题。

优化Governance的订阅列表页面

Is your feature request related to a problem? Please describe.
1、Governance的订阅列表中,没有关于订阅来源的信息,比如订阅时间、订阅来源IP。不容易看出问题。
image
2、同时主题字段的值都统一附加了[],这个很容易引起歧义,去掉这个内容。
3、如果主题比较多,无法很快确定主题是否存在。

Describe the solution you'd like
1、订阅列表中加上订阅时间和来源IP。
2、同时给主题列的值上加一个快捷按钮,效果等于跳转到主题管理页上搜索这个主题。

PR提交开启Junit测试用例验证

Is your feature request related to a problem? Please describe.
工程里包含有一些Junit测试用例。暂时只支持在开发环境运行,还不适合在PR提交时运行。

Describe the solution you'd like
需要新增或者改造某些测试用例。以使其适合在CI环境里运行,提高PR质量和测试覆盖率。

优化Governance的登陆态有效期

Describe the bug
governance的登陆态时间设置太短,不符日常合办公习惯。

To Reproduce
Steps to reproduce the behavior:

  1. 登陆governance
  2. 过一段时间不操作
  3. 登陆态自动失效

Expected behavior
登陆态的失效时间可以配置,默认一天/24小时后失效。

WeEvent适配Fabric 1.4

Is your feature request related to a problem? Please describe.
WeEvent区块链底层支持Fabric 1.4。

Describe the solution you'd like
Fabric的支持和FISCO-BCOS一样,通过插件的方式加载。
用户使用WeEvent,可以选择底层依赖的区块链实现是FISCO-BCOS还是Fabric。
第一个支持的版本为1.4,功能上和现有FISCO-BCOS支持的WeEvent对齐,包括channel特性。

在WeEvent官网提供一个体验环境

Is your feature request related to a problem? Please describe.
鉴于区块链部署的比一般软件复杂,即使WeEvent1.0版本提供了Docker镜像方式。也不能覆盖用户的所有开发环境。

Describe the solution you'd like
在官网http://weevent.webank.com/weevent 上提供一个体验环境,提供服务访问URL供开发调试使用。

优化Governance管理端交互设计

Is your feature request related to a problem? Please describe.
优化Governance管理端交互设计

Describe the solution you'd like
参见设计稿

专门的可靠性验证服务weevent-robust

Is your feature request related to a problem? Please describe.
WeEvent的订阅功能涉及到长连接和多实例的负载均衡。需要一个专门服务来模拟业务使用场景,通过持续不断的请求和长期的观察来验证WeEvent服务的可靠性。
之前通过内部一个spring服务WeEvent-robust来做这个事情。WeEvent-robust是一个常住服务,7*24小时定时给WeEvent服务以负载,然后通过简单统计来判断目标服务的质量。

Describe the solution you'd like
优化并且重构WeEvent-robust服务,作为WeEvent的子模块weevent-robust开源。

订阅主题的时候需要先判断主题和事件ID是否存在

Is your feature request related to a problem? Please describe.
订阅接口对主题和事件ID参数有一些简单的判断。但是没有检查是否存在。
订阅一个不存在的主题或者事件ID,会引起一些不必要的麻烦,对业务造成影响。

Describe the solution you'd like
因为事件发布的前提,是主题已经创建。所以订阅也加一个存在判断是合理的。
同样的,事件ID如果不判断是否存在,很容易出现不同环境的事件ID混用的情况。这个缺陷很难发现,必须加以避免。

Governance支持用户访问授权

Is your feature request related to a problem? Please describe.
Governance上创建的WeEvent服务,现在只有创建者可以看到,其他用户无法访问。

Describe the solution you'd like
将用户分成创建者和授权访问两种角色。
在创建/编辑WeEvent服务的时候,增加一个下拉框,可以选择当前系统内其他用户加入授权列表。
授权列表内的用户也可以访问到这个WeEvent服务。
在服务列表上显示创建者,并且创建者在服务编辑页面也可以选择其他用户加入授权列表。

将区块链插件配置成bean

Is your feature request related to a problem? Please describe.
区块链插件的实现比如FiscoBcosDelegate,是bean比如IProducer和IConsumer的static成员。
这样会有一个问题,Spring重新装载IProducer和IConsumer时并不会重新初始化FiscoBcosDelegate。
自动化测试用例测试不同的区块链时,需要用到@DirtyContext来重新重新装载上下文。

Describe the solution you'd like
将区块链插件配置成bean,支持重新装载。

重新规划服务端口

Is your feature request related to a problem? Please describe.
和We系列的其他产品会出现端口冲突。

Describe the solution you'd like
服务端口从之前规划的8090到8099平移到从7000到7009。
例如:
broker的端口从8090改为7000
governance的端口从8099改为7009
其他类似。

提供Nodejs版本的WeEvent客户端

Is your feature request related to a problem? Please describe.
WeEvent 1.0.0只提供了Java语言的jar包。需要为用户提供更多的选择。

Describe the solution you'd like
提供Nodejs语言的客户端版本。通过STOMP协议封装发布订阅等核心功能。

优化IWeEventClient的接口重载

Is your feature request related to a problem? Please describe.
Java SDK的IWeEventClient接口,对于需不需要groupid,有两大类相似的接口。API定义有一点繁琐。

Describe the solution you'd like
实现上在build方法创建对象时输入可选参数groupid,将IWeEventClient对象和groupid绑定。
减少一半的api接口,使用户接口更清晰。

MQTT连接被动关闭的时候,没有取消这个连接上的订阅

Describe the bug
MQTT的订阅是基于连接的。连接被动关闭的时候,服务端需要自动取消这个连接上的所有订阅。

To Reproduce

  1. 建立MQTT连接,订阅主题
  2. 客户端断开连接后,服务端Consumer还一直在事件通知onEvent

Expected behavior
MQTT连接被动关闭的时候,服务端需要自动取消这个连接上的所有订阅

提供Python语言的WeEvent客户端

Is your feature request related to a problem? Please describe.
WeEvent 1.0.0只提供了Java语言的jar包。需要为用户提供更多的选择。

Describe the solution you'd like
提供Python语言的客户端版本。
一个简单实用的module即可,功能包括订阅发布等核心功能。

增加获取WeEvent版本的接口

Is your feature request related to a problem? Please describe.
WeEvent服务里现在没有带编译和版本信息。为了更好的版本管理,需要增加一个在运行期获取版本的接口。

Describe the solution you'd like
1、WeEvent提供版本CGI接口
WeEvent版本号维护在build.gradle文件里allprojects.version
Broker编译的时候,将这个版本信息带到jar包里,还包括如下信息。
"Build Time": "20190106 20:49:10",
"Git Branch": "master",
"Git Commit Hash": "693a709ddab39965d9c39da0104836cfb4a72054"

2、在Governance的编辑服务页面上,通过这个接口判断WeEvent的URL是否正确。
并且将这些信息在页面上显示给用户看。
image

优化Topic合约提升事件发布和存储效率

Is your feature request related to a problem? Please describe.
Topic合约写数据的时候,事件内容content在input和logs字段都有。
content允许最大的长度是10k,这部分数据有冗余。有优化的空间。

Describe the solution you'd like
通过解析input和output字段,避免使用logs字段,来提升数据存储效率。
这样同时也会提升事件发布效率。
需要Web3SDK提供input和output字段的decode函数extra***。FISCO-BCOS 1.3暂不支持这种优化。

提供GoLang的WeEvent客户端

Is your feature request related to a problem? Please describe.
WeEvent 1.0.0只提供了Java语言的jar包。需要为用户提供更多的选择。

Describe the solution you'd like
提供GoLang语言的客户端版本,通过STOMP协议封装发布订阅等核心功能。

优化spring boot服务的bash启动脚本

Is your feature request related to a problem? Please describe.
1、Java虚拟机的目录选择不是很友好。需要用户设置一些系统变量,不同的发行版差异很大。
2、Java虚拟机的启动参数,现在是最小内存512M。这个限制太强了,也没有必要。
JAVA_OPTS="-Xverify:none -XX:TieredStopAtLevel=1 -Xms512m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=1024m -XX:PermSize=128m -XX:+DisableExplicitGC"
进程的最小内存需要512M,在配置比较低的机器或者虚拟机里,会启动失败。

Describe the solution you'd like
1、关于虚拟机目录,只依赖JAVA_HOME变量。
在启动bash脚本里设置。
JAVA_HOME=
CLASSPATH=.:${JAVA_HOME}\lib;${JAVA_HOME}\lib\tools.jar
Java程序启动方式如:${JAVA_HOME}/bin/java ***

2、Broker和Governance模块默认的启动参数如下
需要在启动脚本里做一个判断,在配置比较低的机器上,比如内存小于1G。不加内存相关参数启动JAVA_OPTS="-Xverify:none -XX:+DisableExplicitGC"。确保程序在虚拟机或者树莓派等低端机器上也能够运行。

3、所有spring boot服务遵循同样的启动规范,启动脚本应该是同一份。例如broker服务的启动broker.sh和governance的启动脚本governance.sh,除了名字不同,里面的bash内容应该完全一致。

各种CI集成工具切换到官方账号运行

Is your feature request related to a problem? Please describe.
CI集成中的codefactor、code quality等使用的不是官方账号。

Describe the solution you'd like
应该尽量切换成官方账号WeEventAdmin来执行。

减少spring boot运行jar包大小

Is your feature request related to a problem? Please describe.
当前快速安装包weevent-1.0.0.tar.gz有100+M,相对来说太大了。微信不允许传输大于100M的文件。
spring boot和spring相关的依赖包也太大了,需要瘦身。

Describe the solution you'd like
spring boot运行包应该允许设置基础jar包的路径。而不是全部打在业务包里。
将安装包控制在100M以内。

优化sockjs本地页面体验,支持简单的协议测试

Is your feature request related to a problem? Please describe.
https://github.com/WeBankFinTech/WeEvent/blob/master/weevent-broker/src/test/java/com/webank/weevent/sample/OverSockjs/index.html
STOMP协议的大部分内容在这个页面无法展示出来。需要优化页面交互,支持简单的协议测试。

Describe the solution you'd like
自定义url
连接/断链
发布支持选择群组
订阅/取消订阅
订阅支持群组、支持输入eventid

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.