Skip to content

Commit

Permalink
Merge pull request #138 from WeBankFinTech/develop
Browse files Browse the repository at this point in the history
merge develop into master ,  pre release 1.0.0
  • Loading branch information
iNanos committed Aug 20, 2020
2 parents 547c673 + e136b57 commit d89c988
Show file tree
Hide file tree
Showing 442 changed files with 1,539 additions and 19,632 deletions.
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Here are the workflow for contributors:
7. Create a pull request

Please follow [the pull request template](./.github/PULL_REQUEST_TEMPLATE.md).
Please make sure the PR has a corresponding issue.
Please make sure the PR has a corresponding issue. [GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)

After creating a PR, one or more reviewers will be assigned to the pull request.
The reviewers will review the code.
Expand Down
70 changes: 70 additions & 0 deletions CONTRIBUTING.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# 贡献给EventMesh

欢迎使用EventMesh! 本文档是有关如何为EventMesh做出贡献的指南。
如果发现不正确或缺失的内容,请留下评论/建议。

## 开始之前

### 设置您的开发环境

您应该在操作系统中安装了JDK。

## 贡献

无论是对于拼写错误,BUG修复还是重要的新功能,我们总是很乐意为您做出贡献。
请不要犹豫,提出问题或发送请求请求。

我们非常重视文档以及与其他项目的集成。
我们很高兴接受这些方面的改进。

### GitHub工作流程

我们将`develop`分支用作开发分支,这表明这是一个不稳定的分支。

这是贡献者的工作流程 :

1.Fork到您个人仓库
2.克隆到本地存储库
3.创建一个新分支并对其进行处理
4.保持分支同步
5.提交您的更改(确保您的提交消息简明扼要)
6.将您的提交推送到分叉的存储库
7.创建PR合并请求

请遵循[Pull Requests模板](./.github/PULL_REQUEST_TEMPLATE.md).
请确保PR对应有相应的问题. [GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)

创建PR后,将为拉取请求分配一个或多个审阅者。
审阅者将审阅代码。

在合并PR之前,请压缩所有修订审阅反馈,拼写错误,合并的内容和基于基础的提交内容。
最终的提交消息应该清晰简洁。

### 打开问题/ PR

我们将使用Issues和Pull Requests作为跟踪器
[GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)
[Pull Requests](https://github.com/WeBankFinTech/EventMesh/pulls)

如果您在文档中发现拼写错误,在代码中发现错误,想要新功能或提出建议,
您可以提出问题[在GitHub上打开问题](https://github.com/WeBankFinTech/EventMesh/issues/new)
请按照问题模板中的准则消息进行操作。

如果您想贡献,请遵循[贡献工作流程](#github-workflow)并创建一个新的拉取请求。
如果您的PR包含较大的更改,例如组件重构或新组件,请写详细文档
有关其设计和使用的信息。

请注意,单个拉取请求不应太大。如果需要进行重大更改,最好将更改分开
到一些个人PR。

### 代码审查

所有代码应由一个或多个提交者进行良好的审查。一些原则:

- 可读性: 重要代码应有详细记录。符合我们的代码风格
- 优雅: 新功能,类或组件应经过精心设计
- 可测试性: 重要代码应经过良好测试(较高的单元测试覆盖率)

## 社区

### 联系我们
27 changes: 17 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,45 +3,52 @@
[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/WeBankFinTech/EventMesh/releases)
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)

[点我查看中文版](README.zh-CN.md)

## What is Event Mesh?
This figure shows the positioning of the event mesh relative to other similar technologies (such as service mesh) in the application framework.
![architecture1](docs/images/eventmesh-define.png)

Landscape of EventMesh:
![architecture1](docs/images/eventmesh-landscape.png)

Event Mesh is a dynamic plug-in cloud-native basic service layer used to decouple the application and middleware layer. It provides flexible, reliable and fast event distribution, and can be managed.
This diagram shows the architecture of EventMesh:
![architecture2](docs/images/eventmesh-arch.png)

The event mesh allows events from one application to be dynamically routed to any other application.
General functions of the event grid:
General functions of the event mesh:
* Event driven;
* Event governance;
* Dynamic routing;
* Cloud native

Dependent components:
* DeFiBus : a distributed messaging platform with low latency, high performance and reliability, flexible scalability. [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)

Key components:
* eventmesh-emesher : an middleware to transmit events between event producers and consumers, support cloud native apps and microservices
* eventmesh-sdk-java : support for popular open standard protocols and APIs, including REST/HTTP, AMQP, MQTT, Websocket and JMS, gRPC etc.
* eventmesh-registry : automatically routes events between applications and services connected to seperate event meshers
* eventmesh-governance : governace layer for event producers and consumers
* eventmesh-acl : security at various level of authentication, authorization and topic/channel access control
* eventmesh-store : the store layer of Event-Mesh which implemented with [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)(based on RocketMQ in financial scenario) or RocketMQ by default. We wish the store layeris a general solution and can use any store implement such as kafka, redis ,blockchain etc.
* eventmesh-sdk-java : currently supports HTTP and TCP protocols, and will support AMQP, MQTT, Websocket and JMS, gRPC etc. in the future
* eventmesh-registry : automatically routes events between applications and services connected to seperate event meshers, manage eventmesh-emesher

## Quick Start
1. Build and deploy eventmesh-store, see instruction ['eventmesh-store quickstart'](docs/en/instructions/eventmesh-store-quickstart.md) .
1. Build and deploy event-store([DeFiBus](https://github.com/WeBankFinTech/DeFiBus)),
see instruction ['event-store quickstart'](docs/en/instructions/eventmesh-store-quickstart.md).
2. Build and deploy eventmesh-emesher, see instruction ['eventmesh-emesher quickstart'](docs/en/instructions/eventmesh-emesher-quickstart.md).
3. Run eventmesh-sdk-java demo, see instruction ['eventmesh-sdk-java quickstart'](docs/en/instructions/eventmesh-sdk-java-quickstart.md).

## Contributing
Contributions are always welcomed! Please see [CONTRIBUTING](CONTRIBUTING.md) for detailed guidelines.
Contributions are always welcomed! Please see [CONTRIBUTING](CONTRIBUTING.md) for detailed guidelines

You can start with the issues labeled with good first issue.
You can start with the issues labeled with good first issue.
[GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)

## License
[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation

## Contacts
WeChat group:

![wechat_qr](./docs/images/mesh-helper.png)
![wechat_qr](docs/images/mesh-helper.png)


50 changes: 50 additions & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
[![Build Status](https://www.travis-ci.org/WeBankFinTech/DeFiBus.svg?branch=master)](https://www.travis-ci.org/WeBankFinTech/EventMesh)
[![Coverage Status](https://coveralls.io/repos/github/WeBankFinTech/DeFiBus/badge.svg?branch=master)](https://coveralls.io/github/WeBankFinTech/EventMesh?branch=master)
[![GitHub release](https://img.shields.io/badge/release-download-orange.svg)](https://github.com/WeBankFinTech/EventMesh/releases)
[![License](https://img.shields.io/badge/license-Apache%202-4EB1BA.svg)](https://www.apache.org/licenses/LICENSE-2.0.html)

## 什么是Event Mesh?
该图显示了Event Mesh相对于应用程序框架中其他类似技术(例如Service Mesh)的定位.
![architecture1](docs/images/eventmesh-define.png)

EventMesh的功能全景:
![architecture1](docs/images/eventmesh-landscape.png)

Event Mesh是一个动态的插件式云原生基础服务层,用于分离应用程序和中间件层。它提供了灵活,可靠和快速的事件分发,并且可以进行管理,
下图显示了Event Mesh的体系结构:
![architecture2](docs/images/eventmesh-arch.png)

Event Mesh允许将来自一个应用程序的事件动态路由到任何其他应用程序.
Event Mesh的一般功能:
* 事件驱动;
* 事件治理;
* 动态路由;
* 云原生

依赖部件:
* DeFiBus:具有低延迟,高性能和可靠性,和灵活可伸缩性的分布式消息传递平台 [DeFiBus](https://github.com/WeBankFinTech/DeFiBus)

关键部件:
* eventmesh-emesher:一种中间件,用于在事件产生者和使用者之间传输事件,支持云原生应用程序和微服务
* eventmesh-sdk-java:当前支持HTTP和TCP协议,未来会支持AMQP, MQTT, Websocket and JMS, gRPC等
* eventmesh-registry:自动在连接到单独事件网格器的应用程序和服务之间路由事件, 管理emesher

## 快速开始
1. 构建并部署event-store([DeFiBus](https://github.com/WeBankFinTech/DeFiBus))
请参见说明['event-store quickstart.zh-CN'](docs/cn/instructions/eventmesh-store-quickstart.zh-CN.md)
2. 构建并部署eventmesh-emesher,请参见说明['eventmesh-emesher quickstart.zh-CN'](docs/cn/instructions/eventmesh-emesher-quickstart.zh-CN.md)
3. 运行eventmesh-sdk-java演示,请参见说明['eventmesh-sdk-java quickstart.zh-CN'](docs/cn/instructions/eventmesh-sdk-java-quickstart.zh-CN.md)

## 贡献
永远欢迎参与共建, 请参阅[贡献](CONTRIBUTING.zh-CN.md)了解详细指南

您可以从问题开始.
[GitHub Issues](https://github.com/WeBankFinTech/EventMesh/issues)

## License
[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html) Copyright (C) Apache Software Foundation

## 联系人
微信群:

![wechat_qr](docs/images/mesh-helper.png)
12 changes: 6 additions & 6 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -177,12 +177,12 @@ subprojects {

]

List logback = [
"org.slf4j:slf4j-api:1.7.25"
List log = [
"org.slf4j:slf4j-api:1.7.30"
]

List guava = [
"com.google.guava:guava:20.0"
"com.google.guava:guava:29.0-jre"
]

List fastjson = [
Expand All @@ -205,9 +205,9 @@ subprojects {
]

dependencies {
compile apache_commons, guava, logback, fastjson, common_io
testCompile apache_commons, guava, logback, fastjson, common_io, junit, assertj, mock
runtime apache_commons, guava, logback, fastjson, common_io
compile apache_commons, guava, log, fastjson, common_io
testCompile apache_commons, guava, log, fastjson, common_io, junit, assertj, mock
runtime apache_commons, guava, log, fastjson, common_io
}

jar {
Expand Down
32 changes: 32 additions & 0 deletions docs/cn/instructions/eventmesh-emesher-quickstart.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#Eventmesh-emesher快速入门说明

###依赖
```
建议使用64位操作系统,建议使用Linux / Unix;
64位JDK 1.8+;
Gradle至少为5.6, 推荐 5.6.*
```

###下载源码
[https://github.com/WeBankFinTech/EventMesh](https://github.com/WeBankFinTech/EventMesh)
您将获得**EventMesh-master.zip**

###构建源码
```$ xslt
unzip EventMesh-master.zip
cd / *您的部署路径* /EventMesh-master/eventmesh-emesher
gradle clean tar -x test
```
您将在目录/ *您的部署路径* /EventMesh-master/eventmesh-emesher/dist中获得**eventmesh-emesher_1.0.0.tar.gz**

###部署
-部署eventmesn-emesher
```$ xslt
upload eventmesh-emesher_1.0.0.tar.gz
tar -zxvf eventmesh-emesher_1.0.0.tar.gz
cd bin
配置 proxy.properties
cd ../bin
sh start.sh
```
如果看到"ProxyTCPServer[port=10000] started....",则说明设置成功。
118 changes: 118 additions & 0 deletions docs/cn/instructions/eventmesh-sdk-java-quickstart.zh-CN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
##如何运行eventmesh-sdk-java演示

> Eventmesh-sdk-java作为客户端,与eventmesh-emesher通信,用于完成消息的发送和接收。
>
> Eventmesh-sdk-java支持同步消息,异步消息和广播消息。同步消息表示生产者发送消息,需要消费者提供响应消息;异步消息表示生产者只发送消息,不关心回复消息。广播消息表示生产者发送一次消息,所有订阅广播主题的消费者都将收到消息。味精
>
> Eventmesh-sdk-java支持HTTP和TCP协议。

### 1. TCP DEMO

####同步消息

- 创建主题

```
sh runadmin.sh updateTopic -c $ {ClusterName} -t $ {topic} -n $ {namesrvAddr}
```



*启动消费者,订阅上一步骤已经创建的Topic

```
运行com.webank.eventmesh.client.tcp.demo.SyncResponse的主要方法
```



启动发送端,发送消息

```
运行com.webank.eventmesh.client.tcp.demo.SyncRequest的主要方法
```



####异步消息

- 创建主题

```
sh runadmin.sh updateTopic -c $ {ClusterName} -t $ {topic} -n $ {namesrvAddr}
```



- 启动消费者,订阅上一步骤已经创建的Topic

```
运行com.webank.eventmesh.client.tcp.demo.AsyncSubscribe的主要方法
```



启动发送端,发送消息

```
运行com.webank.eventmesh.client.tcp.demo.AsyncPublish的主要方法
```



####广播消息

- 创建主题

```
sh runadmin.sh updateTopic -c $ {ClusterName} -t $ {topic} -n $ {namesrvAddr}
```



- 启动消费端,订阅上一步骤已经创建的Topic

```
运行com.webank.eventmesh.client.tcp.demo.AsyncSubscribeBroadcast的主要方法
```



*启动发送端,发送广播消息

```
运行com.webank.eventmesh.client.tcp.demo.AsyncPublishBroadcast的主要方法
```

### 2. HTTP演示

>对于http,eventmesh-sdk-java仅实现msg的发送。而且它已经支持同步味精和异步味精。
>
>在演示中,Java类`LiteMessage``content`字段表示一个特殊的协议,因此,如果您要使用eventmesh-sdk-java的http-client,则只需设计协议的内容并提供消费者的应用程序在同一时间。


####同步消息

>发送消息,生产者需要等到收到用户的响应消息
```
运行com.webank.eventmesh.client.http.demo.SyncRequestInstance的主要方法
```



>发送消息,生产者在回调中处理响应消息
```
运行com.webank.eventmesh.client.http.demo.AsyncSyncRequestInstance的主要方法
```



####异步消息

```
运行com.webank.eventmesh.client.http.demo.AsyncPublishInstance的主要方法
```
Loading

0 comments on commit d89c988

Please sign in to comment.