You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicecomb.apache.org by ni...@apache.org on 2019/11/15 15:05:32 UTC

[servicecomb-pack] branch master updated (094d973 -> 2554be3)

This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git.


    from 094d973  Fix a format issue of design document.
     new 0d4f5ee  SCB-1593 Remove kamon properties
     new 5899896  SCB-1593 Add netty native transport dependencies & Upgrade compatible versions of gPRC and Netty
     new 1a6e594  SCB-1593 Remove ECDHE-ECDSA-AES128-SHA256 ciphers.
     new 70a9d03  SCB-1593 Support Native transports for Linux (since 4.0.16) and MacOS/BSD (since 4.1.11)
     new 2d02a74  SCB-1593 Update documents for Native transports
     new de886fb  SCB-1593 Update benchmark documents for Alpha cluster
     new 10ba35f  SCB-1593 Rename nettyTransport to nativeTransport
     new e6d66d9  SCB-1593 Rename alpha.feature.native to alpha.feature.nativetransport
     new 2554be3  SCB-1593 Add notice for Boringssl support ciphers

The 9 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 alpha/alpha-server/pom.xml                         |  16 ++++-
 .../pack/alpha/server/GrpcServerConfig.java        |   7 +++
 .../pack/alpha/server/GrpcStartable.java           |  63 ++++++++++++++++++-
 .../src/main/resources/application.yaml            |   1 +
 .../alpha-server/src/main/resources/ssl.properties |   8 ++-
 .../alpha/server/AlphaIntegrationWithSSLTest.java  |   3 +-
 distribution/src/release/LICENSE                   |  68 +++++++++++----------
 docs/fsm/assets/benchmark-alpha-1.png              | Bin 0 -> 137281 bytes
 docs/fsm/assets/benchmark-alpha-2.png              | Bin 0 -> 141321 bytes
 docs/fsm/benchmark_zh.md                           |  38 +++++++++++-
 docs/fsm/fsm_manual.md                             |   2 +-
 docs/fsm/fsm_manual_zh.md                          |   2 +-
 docs/user_guide.md                                 |   3 +
 docs/user_guide_zh.md                              |   4 ++
 .../src/main/resources/ssl.properties              |   2 +-
 .../saga/SagaLoadBalanceSenderWithTLSTest.java     |   3 +-
 pom.xml                                            |  19 ++++--
 17 files changed, 187 insertions(+), 52 deletions(-)
 create mode 100644 docs/fsm/assets/benchmark-alpha-1.png
 create mode 100644 docs/fsm/assets/benchmark-alpha-2.png


[servicecomb-pack] 05/09: SCB-1593 Update documents for Native transports

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 2d02a74c1605bcbc1682b926df23fb6300d0ec95
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Nov 15 16:14:49 2019 +0800

    SCB-1593 Update documents for Native transports
---
 docs/user_guide.md    | 3 +++
 docs/user_guide_zh.md | 4 ++++
 2 files changed, 7 insertions(+)

diff --git a/docs/user_guide.md b/docs/user_guide.md
index 6446fd7..031a043 100644
--- a/docs/user_guide.md
+++ b/docs/user_guide.md
@@ -813,6 +813,9 @@ Alpha can be highly available by deploying multiple instances, enable cluster su
 [src-TransactionClientHttpRequestInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
 [src-TransactionHandlerInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionHandlerInterceptor.java
 
+## Native transports
+
+Alpha enabled JNI transports support with `alpha.feature.native=true`, These JNI transports add features specific to a particular platform, generate less garbage, and generally improve performance when compared to the NIO based transport.
 
 ## Experiment
 
diff --git a/docs/user_guide_zh.md b/docs/user_guide_zh.md
index dda4948..0ef95c5 100644
--- a/docs/user_guide_zh.md
+++ b/docs/user_guide_zh.md
@@ -797,6 +797,10 @@ public void bar() {
 
 Alpha 可以通过部署多实例的方式保证高可用,使用 `alpha.cluster.master.enabled=true` 参数开启集群支持
 
+## Native transports
+
+Alpha 使用 `alpha.feature.native=true` 开启JNI调用Socket Transport的功能,与基于NIO的传输相比,这些JNI传输添加了特定于特定平台的功能,产生了更少的垃圾,并总体上提高性能
+
 [src-TransactionClientHttpRequestInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
 [src-TransactionHandlerInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionHandlerInterceptor.java
 


[servicecomb-pack] 08/09: SCB-1593 Rename alpha.feature.native to alpha.feature.nativetransport

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit e6d66d9ea61780d98fd9ea979bca99ee68da8e0d
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Nov 15 17:31:31 2019 +0800

    SCB-1593 Rename alpha.feature.native to alpha.feature.nativetransport
---
 .../org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java    | 2 +-
 alpha/alpha-server/src/main/resources/application.yaml                | 2 +-
 docs/fsm/benchmark_zh.md                                              | 4 ++--
 docs/user_guide.md                                                    | 2 +-
 docs/user_guide_zh.md                                                 | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java
index 96f3caf..557ff10 100644
--- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java
@@ -55,7 +55,7 @@ public class GrpcServerConfig {
   @Value("${alpha.server.ssl.clientCert:client.crt}")
   private String clientCert;
 
-  @Value("${alpha.feature.native:false}")
+  @Value("${alpha.feature.nativetransport:false}")
   private boolean nativeTransport;
 
   public String getHost() {
diff --git a/alpha/alpha-server/src/main/resources/application.yaml b/alpha/alpha-server/src/main/resources/application.yaml
index 2a24d57..3cb74e3 100644
--- a/alpha/alpha-server/src/main/resources/application.yaml
+++ b/alpha/alpha-server/src/main/resources/application.yaml
@@ -23,7 +23,7 @@ alpha:
     host: ${server.host}
     port: 8080
   feature:
-    native: false # Default disabled Netty Native Transport
+    nativetransport: false # Default disabled Netty Native Transport
     akka:
       enabled: false
       channel:
diff --git a/docs/fsm/benchmark_zh.md b/docs/fsm/benchmark_zh.md
index 024e1ca..256f4c0 100644
--- a/docs/fsm/benchmark_zh.md
+++ b/docs/fsm/benchmark_zh.md
@@ -72,7 +72,7 @@ java \
   --spring.datasource.password=saga-password \
   --spring.datasource.url="jdbc:postgresql://10.22.1.234:5432/saga?useSSL=false" \
   --spring.profile.active=prd \
-  --alpha.feature.native=true \
+  --alpha.feature.nativetransport=true \
   --alpha.feature.akka.enabled=true
 ```
 
@@ -104,7 +104,7 @@ java \
 集群场景
 
 * 使用5台服务器,分别部署2节点Alpha集群和3节点模拟客户端
-* 使用 Alpha 0.6.0 版本并开启 `alpha.feature.native=true` 参数
+* 使用 Alpha 0.6.0 版本并开启 `alpha.feature.nativetransport=true` 参数
 
 | 客户端 | 并发数 | 总耗时(s) | 平均耗时(ms) | 吞吐率 | 事务量 |
 | ------ | ------ | --------- | ---- | ------ | ---- |
diff --git a/docs/user_guide.md b/docs/user_guide.md
index 031a043..5885aff 100644
--- a/docs/user_guide.md
+++ b/docs/user_guide.md
@@ -815,7 +815,7 @@ Alpha can be highly available by deploying multiple instances, enable cluster su
 
 ## Native transports
 
-Alpha enabled JNI transports support with `alpha.feature.native=true`, These JNI transports add features specific to a particular platform, generate less garbage, and generally improve performance when compared to the NIO based transport.
+Alpha enabled JNI transports support with `alpha.feature.nativetransport=true`, These JNI transports add features specific to a particular platform, generate less garbage, and generally improve performance when compared to the NIO based transport.
 
 ## Experiment
 
diff --git a/docs/user_guide_zh.md b/docs/user_guide_zh.md
index 0ef95c5..1af0eee 100644
--- a/docs/user_guide_zh.md
+++ b/docs/user_guide_zh.md
@@ -799,7 +799,7 @@ Alpha 可以通过部署多实例的方式保证高可用,使用 `alpha.cluste
 
 ## Native transports
 
-Alpha 使用 `alpha.feature.native=true` 开启JNI调用Socket Transport的功能,与基于NIO的传输相比,这些JNI传输添加了特定于特定平台的功能,产生了更少的垃圾,并总体上提高性能
+Alpha 使用 `alpha.feature.nativetransport=true` 开启JNI调用Socket Transport的功能,与基于NIO的传输相比,这些JNI传输添加了特定于特定平台的功能,产生了更少的垃圾,并总体上提高性能
 
 [src-TransactionClientHttpRequestInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionClientHttpRequestInterceptor.java
 [src-TransactionHandlerInterceptor]: ../omega/omega-transport/omega-transport-resttemplate/src/main/java/org/apache/servicecomb/pack/omega/transport/resttemplate/TransactionHandlerInterceptor.java


[servicecomb-pack] 06/09: SCB-1593 Update benchmark documents for Alpha cluster

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit de886fb1321a694a282ccc633427e780ba0f9669
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Nov 15 16:53:34 2019 +0800

    SCB-1593 Update benchmark documents for Alpha cluster
---
 docs/fsm/assets/benchmark-alpha-1.png | Bin 0 -> 137281 bytes
 docs/fsm/assets/benchmark-alpha-2.png | Bin 0 -> 141321 bytes
 docs/fsm/benchmark_zh.md              |  38 +++++++++++++++++++++++++++++++---
 docs/fsm/fsm_manual.md                |   2 +-
 docs/fsm/fsm_manual_zh.md             |   2 +-
 5 files changed, 37 insertions(+), 5 deletions(-)

diff --git a/docs/fsm/assets/benchmark-alpha-1.png b/docs/fsm/assets/benchmark-alpha-1.png
new file mode 100644
index 0000000..4469a37
Binary files /dev/null and b/docs/fsm/assets/benchmark-alpha-1.png differ
diff --git a/docs/fsm/assets/benchmark-alpha-2.png b/docs/fsm/assets/benchmark-alpha-2.png
new file mode 100644
index 0000000..056d435
Binary files /dev/null and b/docs/fsm/assets/benchmark-alpha-2.png differ
diff --git a/docs/fsm/benchmark_zh.md b/docs/fsm/benchmark_zh.md
index e6df3ff..024e1ca 100644
--- a/docs/fsm/benchmark_zh.md
+++ b/docs/fsm/benchmark_zh.md
@@ -72,6 +72,7 @@ java \
   --spring.datasource.password=saga-password \
   --spring.datasource.url="jdbc:postgresql://10.22.1.234:5432/saga?useSSL=false" \
   --spring.profile.active=prd \
+  --alpha.feature.native=true \
   --alpha.feature.akka.enabled=true
 ```
 
@@ -80,11 +81,11 @@ java \
 总结:
 
 * 0.5.0 Akka的性能比0.4.0版本提升一个数量级,吞吐率最高可达到每秒1351笔全局事务,每笔全局事务包含包含3个子事务,Alpha gPRC 接口吞吐量 1.8w/每秒
-* 0.5.0版本单节点Alpha最优并发量为 500~1000,平均耗<1s,吞吐率 1200+/秒, CPU利用率稳定工作在80%
+* 0.6.0版本单节点Alpha最优并发量为 500~1000,平均耗<1s,吞吐率 1900+/秒, CPU利用率稳定工作在80%
 * 本测试客户端和服务端分别部署在不同的服务器,模拟真实网络通讯
-* Alpha估算:Alpha部署数量=最大吞吐量/1200
+* Alpha估算:Alpha部署数量=最大吞吐量/1900
 
-| 节点数 | 并发数 | 总耗时(s) | 平均耗时(ms) | 吞吐率 | 事务量 |
+| 版本 | 并发数 | 总耗时(s) | 平均耗时(ms) | 吞吐率 | 事务量 |
 | ------ | ------ | --------- | ---- | ------ | ---- |
 | 0.5.0 without Akka | 100    | 102       | 1026 | 98/sec | 10000 |
 | 0.5.0 without Akka | 500    | 99      | 4970 | 101/sec | 10000 |
@@ -95,6 +96,37 @@ java \
 | 0.5.0 with Akka | 1000   | 39      | 786 | 1282/sec | 50000 |
 | 0.5.0 with Akka | 2000 | 37 | 1519 | 1351/sec | 50000 |
 | 0.5.0 with Akka | 3000 | 43 | 2687 | 1116/sec | 50000 |
+| 0.6.0 with Akka | 500 | 7 | 373 | 1428/sec | 10000 |
+| 0.6.0 with Akka | 500 | 26 | 267 | 1923/sec | 50000 |
+| 0.6.0 with Akka | 1000 | 27 | 552 | 1851/sec | 50000 |
+| 0.6.0 with Akka | 2000 | 28 | 1139 | 1785/sec | 50000 |
+
+集群场景
+
+* 使用5台服务器,分别部署2节点Alpha集群和3节点模拟客户端
+* 使用 Alpha 0.6.0 版本并开启 `alpha.feature.native=true` 参数
+
+| 客户端 | 并发数 | 总耗时(s) | 平均耗时(ms) | 吞吐率 | 事务量 |
+| ------ | ------ | --------- | ---- | ------ | ---- |
+| 客户端1 | 500    | 39       | 392 | 1282/sec | 50000 |
+| 客户端2 | 500    | 38       | 388 | 1315/sec | 50000 |
+| 客户端3 | 500    | 39       | 393 | 1282/sec | 50000 |
+
+通过集群部署 Alpha 可以水平扩展吞吐率,两节点集群的 QPS 约为3879,并且单节点 Alpha 的健康度指标看起来不错
+
+* Events 接收 Omega 消息平均耗时约 0.39~9 毫秒
+* Actors 发送分片消息平均耗时约0~0.02毫秒
+*  Sagas 单笔全局事务处理平均耗时约20.13~23.84毫秒
+* DB 单笔全局事务持久化平均耗时约1.81~1.98毫秒
+
+Alpha Node 1
+
+![image-20191115164409844](assets/benchmark-alpha-1.png)
+
+Alpha Node 2
+
+![image-20191115164428259](assets/benchmark-alpha-2.png)
+
 
 ## 测试详细说明
 
diff --git a/docs/fsm/fsm_manual.md b/docs/fsm/fsm_manual.md
index 9f98b1c..e3e0e68 100755
--- a/docs/fsm/fsm_manual.md
+++ b/docs/fsm/fsm_manual.md
@@ -293,7 +293,7 @@ services:
 
 [设计文档](design_fsm_zh.md)
 
-[压力测试报告](benchmark_zh.md)
+[基准测试报告](benchmark_zh.md)
 
 
 
diff --git a/docs/fsm/fsm_manual_zh.md b/docs/fsm/fsm_manual_zh.md
index dfec974..18dd5dc 100755
--- a/docs/fsm/fsm_manual_zh.md
+++ b/docs/fsm/fsm_manual_zh.md
@@ -293,7 +293,7 @@ services:
 
 [设计文档](design_fsm_zh.md)
 
-[压力测试报告](benchmark_zh.md)
+[基准测试报告](benchmark_zh.md)
 
 
 


[servicecomb-pack] 01/09: SCB-1593 Remove kamon properties

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 0d4f5eeb0ea90ddd58cfbd2d2b79c831f205d8b2
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Wed Nov 13 10:42:50 2019 +0800

    SCB-1593 Remove kamon properties
---
 pom.xml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index b79c2f3..13eded6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,6 @@
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
     <java.version>1.8</java.version>
-    <kamon.version>0.6.7</kamon.version>
     <!-- using log4j 2.7 with Spring Boot 1.x -->
     <log4j.version>2.7</log4j.version>
     <disruptor.version>3.3.7</disruptor.version>


[servicecomb-pack] 03/09: SCB-1593 Remove ECDHE-ECDSA-AES128-SHA256 ciphers.

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 1a6e594381c6b55f74449468bfc8fdb5afd2cdbd
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Nov 15 15:45:55 2019 +0800

    SCB-1593 Remove ECDHE-ECDSA-AES128-SHA256 ciphers.
    
    https://github.com/google/boringssl/commit/6e678eeb6e76171712ae00d467321b6fe196152d
---
 alpha/alpha-server/src/main/resources/ssl.properties                   | 2 +-
 .../servicecomb/pack/alpha/server/AlphaIntegrationWithSSLTest.java     | 3 +--
 .../omega-connector-grpc/src/main/resources/ssl.properties             | 2 +-
 .../omega/connector/grpc/saga/SagaLoadBalanceSenderWithTLSTest.java    | 3 +--
 4 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/alpha/alpha-server/src/main/resources/ssl.properties b/alpha/alpha-server/src/main/resources/ssl.properties
index dccd4c8..ff3c214 100644
--- a/alpha/alpha-server/src/main/resources/ssl.properties
+++ b/alpha/alpha-server/src/main/resources/ssl.properties
@@ -13,5 +13,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-ciphers = ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES128-SHA256
+ciphers = ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-GCM-SHA384
 protocols = TLSv1.2
diff --git a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithSSLTest.java b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithSSLTest.java
index a3b0dfb..140238e 100644
--- a/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithSSLTest.java
+++ b/alpha/alpha-server/src/test/java/org/apache/servicecomb/pack/alpha/server/AlphaIntegrationWithSSLTest.java
@@ -60,8 +60,7 @@ public class AlphaIntegrationWithSSLTest extends AlphaIntegrationTest {
       sslContext = GrpcSslContexts.forClient().sslProvider(SslProvider.OPENSSL)
           .protocols("TLSv1.2","TLSv1.1")
           .ciphers(Arrays.asList("ECDHE-RSA-AES128-GCM-SHA256",
-              "ECDHE-RSA-AES256-GCM-SHA384",
-              "ECDHE-ECDSA-AES128-SHA256"))
+              "ECDHE-RSA-AES256-GCM-SHA384"))
           .trustManager(new File(classLoader.getResource("ca.crt").getFile()))
           .keyManager(new File(classLoader.getResource("client.crt").getFile()),
               new File(classLoader.getResource("client.pem").getFile())).build();
diff --git a/omega/omega-connector/omega-connector-grpc/src/main/resources/ssl.properties b/omega/omega-connector/omega-connector-grpc/src/main/resources/ssl.properties
index dccd4c8..ff3c214 100644
--- a/omega/omega-connector/omega-connector-grpc/src/main/resources/ssl.properties
+++ b/omega/omega-connector/omega-connector-grpc/src/main/resources/ssl.properties
@@ -13,5 +13,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-ciphers = ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-AES128-SHA256
+ciphers = ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-GCM-SHA384
 protocols = TLSv1.2
diff --git a/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/SagaLoadBalanceSenderWithTLSTest.java b/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/SagaLoadBalanceSenderWithTLSTest.java
index 8007f19..6873661 100644
--- a/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/SagaLoadBalanceSenderWithTLSTest.java
+++ b/omega/omega-connector/omega-connector-grpc/src/test/java/org/apache/servicecomb/pack/omega/connector/grpc/saga/SagaLoadBalanceSenderWithTLSTest.java
@@ -107,8 +107,7 @@ public class SagaLoadBalanceSenderWithTLSTest extends SagaLoadBalancedSenderTest
         new File(classLoader.getResource("server.pem").getFile()))
         .protocols("TLSv1.2","TLSv1.1")
         .ciphers(Arrays.asList("ECDHE-RSA-AES128-GCM-SHA256",
-            "ECDHE-RSA-AES256-GCM-SHA384",
-            "ECDHE-ECDSA-AES128-SHA256"));
+            "ECDHE-RSA-AES256-GCM-SHA384"));
 
       sslClientContextBuilder.trustManager(new File(classLoader.getResource("client.crt").getFile()));
       sslClientContextBuilder.clientAuth(ClientAuth.REQUIRE);


[servicecomb-pack] 07/09: SCB-1593 Rename nettyTransport to nativeTransport

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 10ba35f4969f020d119b25553f714e7f8c1eb185
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Nov 15 17:18:42 2019 +0800

    SCB-1593 Rename nettyTransport to nativeTransport
---
 .../org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java  | 6 +++---
 .../org/apache/servicecomb/pack/alpha/server/GrpcStartable.java     | 4 ++--
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java
index 9f8911a..96f3caf 100644
--- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java
@@ -56,7 +56,7 @@ public class GrpcServerConfig {
   private String clientCert;
 
   @Value("${alpha.feature.native:false}")
-  private boolean nettyTransport;
+  private boolean nativeTransport;
 
   public String getHost() {
     return host;
@@ -102,8 +102,8 @@ public class GrpcServerConfig {
     return clientCert;
   }
 
-  public boolean isNettyTransport() {
-    return nettyTransport;
+  public boolean isNativeTransport() {
+    return nativeTransport;
   }
 }
 
diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcStartable.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcStartable.java
index 20980c2..4fe6108 100644
--- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcStartable.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcStartable.java
@@ -224,7 +224,7 @@ public class GrpcStartable implements ServerStartable {
    * */
   private Class<? extends ServerChannel> selectorServerChannel() {
     Class<? extends ServerChannel> channel = NioServerSocketChannel.class;
-    if (serverConfig.isNettyTransport()) {
+    if (serverConfig.isNativeTransport()) {
       if (OSInfo.isLinux()) {
         channel = EpollServerSocketChannel.class;
       } else if (OSInfo.isMacOS()) {
@@ -237,7 +237,7 @@ public class GrpcStartable implements ServerStartable {
 
   private EventLoopGroup selectorEventLoopGroup(int nThreads) {
     EventLoopGroup group = new NioEventLoopGroup(nThreads);
-    if (serverConfig.isNettyTransport()) {
+    if (serverConfig.isNativeTransport()) {
       if (OSInfo.isLinux()) {
         group = new EpollEventLoopGroup(nThreads);
       } else if (OSInfo.isMacOS()) {


[servicecomb-pack] 02/09: SCB-1593 Add netty native transport dependencies & Upgrade compatible versions of gPRC and Netty

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 5899896b0f1d217f7e6f78fc226c67e17598459c
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Nov 15 15:29:57 2019 +0800

    SCB-1593 Add netty native transport dependencies & Upgrade compatible versions of gPRC and Netty
---
 alpha/alpha-server/pom.xml       | 16 +++++++++-
 distribution/src/release/LICENSE | 68 +++++++++++++++++++++-------------------
 pom.xml                          | 18 +++++++++--
 3 files changed, 65 insertions(+), 37 deletions(-)

diff --git a/alpha/alpha-server/pom.xml b/alpha/alpha-server/pom.xml
index d95b522..ee4bcef 100644
--- a/alpha/alpha-server/pom.xml
+++ b/alpha/alpha-server/pom.xml
@@ -162,9 +162,23 @@
     </dependency>
     <dependency>
       <groupId>io.netty</groupId>
+      <artifactId>netty-handler</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>io.netty</groupId>
       <artifactId>netty-tcnative-boringssl-static</artifactId>
     </dependency>
-    
+    <dependency>
+      <groupId>io.netty</groupId>
+      <artifactId>netty-transport-native-kqueue</artifactId>
+      <classifier>osx-x86_64</classifier>
+    </dependency>
+    <dependency>
+      <groupId>io.netty</groupId>
+      <artifactId>netty-transport-native-epoll</artifactId>
+      <classifier>linux-x86_64</classifier>
+    </dependency>
+
     <!-- For testing the artifacts scope are test-->
     <dependency>
       <groupId>org.springframework.boot</groupId>
diff --git a/distribution/src/release/LICENSE b/distribution/src/release/LICENSE
index 11b5034..c7a5a28 100644
--- a/distribution/src/release/LICENSE
+++ b/distribution/src/release/LICENSE
@@ -283,24 +283,26 @@ For details, see their respective project links.
 * FindBugs-jsr305 (com.google.code.findbugs:jsr305:3.0.1 - http://findbugs.sourceforge.net/)
 * Gson (com.google.code.gson:gson:2.8.4 - https://github.com/google/gson/gson)
 * Guava: Google Core Libraries for Java (com.google.guava:guava:20.0 - https://github.com/google/guava/guava)
-* io.grpc:grpc-context (io.grpc:grpc-context:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-core (io.grpc:grpc-core:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-netty (io.grpc:grpc-netty:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-protobuf (io.grpc:grpc-protobuf:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-protobuf-lite (io.grpc:grpc-protobuf-lite:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-stub (io.grpc:grpc-stub:1.14.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-context (io.grpc:grpc-context:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-core (io.grpc:grpc-core:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-netty (io.grpc:grpc-netty:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-protobuf (io.grpc:grpc-protobuf:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-protobuf-lite (io.grpc:grpc-protobuf-lite:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-stub (io.grpc:grpc-stub:1.22.0 - https://github.com/grpc/grpc-java)
 * Javassist (org.javassist:javassist:3.20.0-GA - http://www.javassist.org/)
-* Netty/Buffer (io.netty:netty-buffer:4.1.24.Final - http://netty.io/netty-buffer/)
-* Netty/Codec/HTTP (io.netty:netty-codec-http:4.1.24.Final - http://netty.io/netty-codec-http/)
-* Netty/Codec/HTTP2 (io.netty:netty-codec-http2:4.1.24.Final - http://netty.io/netty-codec-http2/)
-* Netty/Codec/Socks (io.netty:netty-codec-socks:4.1.24.Final - http://netty.io/netty-codec-socks/)
-* Netty/Codec (io.netty:netty-codec:4.1.24.Final - http://netty.io/netty-codec/)
-* Netty/Common (io.netty:netty-common:4.1.24.Final - http://netty.io/netty-common/)
-* Netty/Handler/Proxy (io.netty:netty-handler-proxy:4.1.24.Final - http://netty.io/netty-handler-proxy/)
-* Netty/Handler (io.netty:netty-handler:4.1.24.Final - http://netty.io/netty-handler/)
-* Netty/Resolver (io.netty:netty-resolver:4.1.24.Final - http://netty.io/netty-resolver/)
+* Netty/Buffer (io.netty:netty-buffer:4.1.35.Final - http://netty.io/netty-buffer/)
+* Netty/Codec/HTTP (io.netty:netty-codec-http:4.1.35.Final - http://netty.io/netty-codec-http/)
+* Netty/Codec/HTTP2 (io.netty:netty-codec-http2:4.1.35.Final - http://netty.io/netty-codec-http2/)
+* Netty/Codec/Socks (io.netty:netty-codec-socks:4.1.35.Final - http://netty.io/netty-codec-socks/)
+* Netty/Codec (io.netty:netty-codec:4.1.35.Final - http://netty.io/netty-codec/)
+* Netty/Common (io.netty:netty-common:4.1.35.Final - http://netty.io/netty-common/)
+* Netty/Handler/Proxy (io.netty:netty-handler-proxy:4.1.35.Final - http://netty.io/netty-handler-proxy/)
+* Netty/Handler (io.netty:netty-handler:4.1.35.Final - http://netty.io/netty-handler/)
+* Netty/Resolver (io.netty:netty-resolver:4.1.35.Final - http://netty.io/netty-resolver/)
 * Netty/TomcatNative [BoringSSL - Static] (io.netty:netty-tcnative-boringssl-static:2.0.7.Final - https://github.com/netty/netty-tcnative/netty-tcnative-boringssl-static/)
-* Netty/Transport (io.netty:netty-transport:4.1.24.Final - http://netty.io/netty-transport/)
+* Netty/Transport (io.netty:netty-transport:4.1.35.Final - http://netty.io/netty-transport/)
+* Netty/Transport (io.netty:netty-transport-native-epoll:4.1.35.Final - https://github.com/netty/netty/tree/4.1/transport-native-epoll)
+* Netty/Transport (io.netty:netty-transport-native-kqueue:4.1.35.Final - https://github.com/netty/netty/tree/4.1/transport-native-kqueue)
 * Objenesis (org.objenesis:objenesis:2.6 - http://objenesis.org)
 * omega-transport-dubbo (org.apache.servicecomb.pack:omega-transport-dubbo:0.4.0-SNAPSHOT - https://github.com/apache/servicecomb-saga/omega/omega-transport/omega-transport-dubbo)
 * omega-transport-feign (org.apache.servicecomb.pack:omega-transport-feign:0.4.0-SNAPSHOT - https://github.com/apache/servicecomb-saga/omega/omega-transport/omega-transport-feign)
@@ -511,12 +513,12 @@ For details, see their respective project links.
 * HikariCP (com.zaxxer:HikariCP:3.2.0 - https://github.com/brettwooldridge/HikariCP)
 * HPPC Collections (com.carrotsearch:hppc:0.7.1 - http://labs.carrotsearch.com/hppc.html/hppc)
 * hystrix-core (com.netflix.hystrix:hystrix-core:1.4.3 - https://github.com/Netflix/Hystrix)
-* io.grpc:grpc-context (io.grpc:grpc-context:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-core (io.grpc:grpc-core:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-netty (io.grpc:grpc-netty:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-protobuf (io.grpc:grpc-protobuf:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-protobuf-lite (io.grpc:grpc-protobuf-lite:1.14.0 - https://github.com/grpc/grpc-java)
-* io.grpc:grpc-stub (io.grpc:grpc-stub:1.14.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-context (io.grpc:grpc-context:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-core (io.grpc:grpc-core:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-netty (io.grpc:grpc-netty:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-protobuf (io.grpc:grpc-protobuf:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-protobuf-lite (io.grpc:grpc-protobuf-lite:1.22.0 - https://github.com/grpc/grpc-java)
+* io.grpc:grpc-stub (io.grpc:grpc-stub:1.22.0 - https://github.com/grpc/grpc-java)
 * Jackson (org.codehaus.jackson:jackson-core-asl:1.9.13 - http://jackson.codehaus.org)
 * Jackson-annotations (com.fasterxml.jackson.core:jackson-annotations:2.9.0 - http://github.com/FasterXML/jackson)
 * Jackson-core (com.fasterxml.jackson.core:jackson-core:2.9.0 - https://github.com/FasterXML/jackson-core)
@@ -557,17 +559,17 @@ For details, see their respective project links.
 * nacos-common 1.0.0 (com.alibaba.nacos:nacos-common:1.0.0 - http://maven.apache.org)
 * netflix-commons-util (com.netflix.netflix-commons:netflix-commons-util:0.1.1 - https://github.com/Netflix/netflix-commons)
 * netflix-statistics (com.netflix.netflix-commons:netflix-statistics:0.1.1 - https://github.com/Netflix/netflix-commons)
-* Netty/Buffer (io.netty:netty-buffer:4.1.24.Final - http://netty.io/netty-buffer/)
-* Netty/Codec/HTTP (io.netty:netty-codec-http:4.1.24.Final - http://netty.io/netty-codec-http/)
-* Netty/Codec/HTTP2 (io.netty:netty-codec-http2:4.1.24.Final - http://netty.io/netty-codec-http2/)
-* Netty/Codec/Socks (io.netty:netty-codec-socks:4.1.24.Final - http://netty.io/netty-codec-socks/)
-* Netty/Codec (io.netty:netty-codec:4.1.24.Final - http://netty.io/netty-codec/)
-* Netty/Common (io.netty:netty-common:4.1.24.Final - http://netty.io/netty-common/)
-* Netty/Handler/Proxy (io.netty:netty-handler-proxy:4.1.24.Final - http://netty.io/netty-handler-proxy/)
-* Netty/Handler (io.netty:netty-handler:4.1.24.Final - http://netty.io/netty-handler/)
-* Netty/Resolver (io.netty:netty-resolver:4.1.24.Final - http://netty.io/netty-resolver/)
-* Netty/TomcatNative [BoringSSL - Static] (io.netty:netty-tcnative-boringssl-static:2.0.7.Final - https://github.com/netty/netty-tcnative/netty-tcnative-boringssl-static/)
-* Netty/Transport (io.netty:netty-transport:4.1.24.Final - http://netty.io/netty-transport/)
+* Netty/Buffer (io.netty:netty-buffer:4.1.35.Final - http://netty.io/netty-buffer/)
+* Netty/Codec/HTTP (io.netty:netty-codec-http:4.1.35.Final - http://netty.io/netty-codec-http/)
+* Netty/Codec/HTTP2 (io.netty:netty-codec-http2:4.1.35.Final - http://netty.io/netty-codec-http2/)
+* Netty/Codec/Socks (io.netty:netty-codec-socks:4.1.35.Final - http://netty.io/netty-codec-socks/)
+* Netty/Codec (io.netty:netty-codec:4.1.35.Final - http://netty.io/netty-codec/)
+* Netty/Common (io.netty:netty-common:4.1.35.Final - http://netty.io/netty-common/)
+* Netty/Handler/Proxy (io.netty:netty-handler-proxy:4.1.35.Final - http://netty.io/netty-handler-proxy/)
+* Netty/Handler (io.netty:netty-handler:4.1.35.Final - http://netty.io/netty-handler/)
+* Netty/Resolver (io.netty:netty-resolver:4.1.35.Final - http://netty.io/netty-resolver/)
+* Netty/TomcatNative [BoringSSL - Static] (io.netty:netty-tcnative-boringssl-static:2.0.25.Final - https://github.com/netty/netty-tcnative/netty-tcnative-boringssl-static/)
+* Netty/Transport (io.netty:netty-transport:4.1.35.Final - http://netty.io/netty-transport/)
 * Netty (io.netty:netty:3.10.6.Final - http://netty.io/)
 * Non-Blocking Reactive Foundation for the JVM (io.projectreactor:reactor-core:3.2.10.RELEASE - https://github.com/reactor/reactor-core)
 * Objenesis (org.objenesis:objenesis:2.6 - http://objenesis.org)
diff --git a/pom.xml b/pom.xml
index 13eded6..b8898ee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -62,7 +62,7 @@
     <akka-persistence-redis.version>0.4.0</akka-persistence-redis.version>
     <rat.version>0.12</rat.version>
     <maven.failsafe.version>2.19.1</maven.failsafe.version>
-    <grpc.version>1.14.0</grpc.version>
+    <grpc.version>1.22.0</grpc.version>
     <kryo.version>4.0.1</kryo.version>
     <javax.transaction.version>1.2</javax.transaction.version>
     <eclipse.link.version>2.7.1</eclipse.link.version>
@@ -71,8 +71,8 @@
     <jaxb.version>2.3.0</jaxb.version>
     <javax.activation.version>1.1.1</javax.activation.version>
     <maven-dependency-plugin.version>3.0.2</maven-dependency-plugin.version>
-    <netty.boringssl.version>2.0.7.Final</netty.boringssl.version>
-    <netty.version>4.1.24.Final</netty.version>
+    <netty.boringssl.version>2.0.25.Final</netty.boringssl.version>
+    <netty.version>4.1.35.Final</netty.version>
     <zookeeper.version>3.4.13</zookeeper.version>
     <kafka.version>2.1.1</kafka.version>
     <hystrix.version>1.5.12</hystrix.version>
@@ -235,6 +235,18 @@
         <version>${netty.version}</version>
       </dependency>
       <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-transport-native-kqueue</artifactId>
+        <version>${netty.version}</version>
+        <classifier>osx-x86_64</classifier>
+      </dependency>
+      <dependency>
+        <groupId>io.netty</groupId>
+        <artifactId>netty-transport-native-epoll</artifactId>
+        <version>${netty.version}</version>
+        <classifier>linux-x86_64</classifier>
+      </dependency>
+      <dependency>
         <groupId>com.google.code.gson</groupId>
         <artifactId>gson</artifactId>
         <version>2.8.4</version>


[servicecomb-pack] 09/09: SCB-1593 Add notice for Boringssl support ciphers

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 2554be3da548763dec8d49adaad8e21c170b9574
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Nov 15 18:11:17 2019 +0800

    SCB-1593 Add notice for Boringssl support ciphers
---
 alpha/alpha-server/src/main/resources/ssl.properties | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/alpha/alpha-server/src/main/resources/ssl.properties b/alpha/alpha-server/src/main/resources/ssl.properties
index ff3c214..608247c 100644
--- a/alpha/alpha-server/src/main/resources/ssl.properties
+++ b/alpha/alpha-server/src/main/resources/ssl.properties
@@ -13,5 +13,11 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# Netty support ssl with boringssl https://github.com/google/boringssl
+# Boringssl support ciphers https://github.com/google/boringssl/blob/master/ssl/ssl_cipher.cc
+#
+# Notice:
+# Boringssl remove legacy SHA-2 CBC ciphers. https://github.com/google/boringssl/commit/6e678eeb6e76171712ae00d467321b6fe196152d
+
 ciphers = ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-GCM-SHA384
 protocols = TLSv1.2


[servicecomb-pack] 04/09: SCB-1593 Support Native transports for Linux (since 4.0.16) and MacOS/BSD (since 4.1.11)

Posted by ni...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ningjiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-pack.git

commit 70a9d03b3a9df13809eec41fcc58e571e64295fd
Author: Lei Zhang <zh...@apache.org>
AuthorDate: Fri Nov 15 16:03:29 2019 +0800

    SCB-1593 Support Native transports for Linux (since 4.0.16) and MacOS/BSD (since 4.1.11)
---
 .../pack/alpha/server/GrpcServerConfig.java        |  7 +++
 .../pack/alpha/server/GrpcStartable.java           | 63 ++++++++++++++++++++--
 .../src/main/resources/application.yaml            |  1 +
 3 files changed, 68 insertions(+), 3 deletions(-)

diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java
index 7904b23..9f8911a 100644
--- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcServerConfig.java
@@ -55,6 +55,9 @@ public class GrpcServerConfig {
   @Value("${alpha.server.ssl.clientCert:client.crt}")
   private String clientCert;
 
+  @Value("${alpha.feature.native:false}")
+  private boolean nettyTransport;
+
   public String getHost() {
     return host;
   }
@@ -98,6 +101,10 @@ public class GrpcServerConfig {
   public String getClientCert() {
     return clientCert;
   }
+
+  public boolean isNettyTransport() {
+    return nettyTransport;
+  }
 }
 
 
diff --git a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcStartable.java b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcStartable.java
index 4760bac..20980c2 100644
--- a/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcStartable.java
+++ b/alpha/alpha-server/src/main/java/org/apache/servicecomb/pack/alpha/server/GrpcStartable.java
@@ -20,6 +20,12 @@
 
 package org.apache.servicecomb.pack.alpha.server;
 
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.ServerChannel;
+import io.netty.channel.epoll.EpollEventLoopGroup;
+import io.netty.channel.epoll.EpollServerSocketChannel;
+import io.netty.channel.kqueue.KQueueEventLoopGroup;
+import io.netty.channel.kqueue.KQueueServerSocketChannel;
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.channel.socket.nio.NioServerSocketChannel;
 import java.io.IOException;
@@ -103,9 +109,9 @@ public class GrpcStartable implements ServerStartable {
   private ServerBuilder getServerBuilder(int port) {
     return NettyServerBuilder.forAddress(
         new InetSocketAddress(serverConfig.getHost(), port))
-        .channelType(NioServerSocketChannel.class)
-        .bossEventLoopGroup(new NioEventLoopGroup(1))
-        .workerEventLoopGroup(new NioEventLoopGroup());
+        .channelType(selectorServerChannel())
+        .bossEventLoopGroup(selectorEventLoopGroup(1))
+        .workerEventLoopGroup(selectorEventLoopGroup(0));
   }
 
   private SslContextBuilder getSslContextBuilder(GrpcServerConfig config) {
@@ -202,4 +208,55 @@ public class GrpcStartable implements ServerStartable {
       throw error[0];
     }
   }
+
+  /**
+   * https://netty.io/wiki/native-transports.html
+   *
+   * RHEL/CentOS/Fedora:
+   * sudo yum install autoconf automake libtool make tar \
+   *                  glibc-devel libaio-devel \
+   *                  libgcc.i686 glibc-devel.i686
+   * Debian/Ubuntu:
+   * sudo apt-get install autoconf automake libtool make tar \
+   *                      gcc-multilib libaio-dev
+   *
+   * brew install autoconf automake libtool
+   * */
+  private Class<? extends ServerChannel> selectorServerChannel() {
+    Class<? extends ServerChannel> channel = NioServerSocketChannel.class;
+    if (serverConfig.isNettyTransport()) {
+      if (OSInfo.isLinux()) {
+        channel = EpollServerSocketChannel.class;
+      } else if (OSInfo.isMacOS()) {
+        channel = KQueueServerSocketChannel.class;
+      }
+    }
+    LOG.info("Netty channel type is " + channel.getSimpleName());
+    return channel;
+  }
+
+  private EventLoopGroup selectorEventLoopGroup(int nThreads) {
+    EventLoopGroup group = new NioEventLoopGroup(nThreads);
+    if (serverConfig.isNettyTransport()) {
+      if (OSInfo.isLinux()) {
+        group = new EpollEventLoopGroup(nThreads);
+      } else if (OSInfo.isMacOS()) {
+        group = new KQueueEventLoopGroup(nThreads);
+      }
+    }
+    LOG.info("Netty event loop group is " + group.getClass().getSimpleName());
+    return group;
+  }
+
+  static class OSInfo {
+    private static String OS = System.getProperty("os.name").toLowerCase();
+
+    public static boolean isLinux() {
+      return OS.indexOf("linux") >= 0;
+    }
+
+    public static boolean isMacOS() {
+      return OS.indexOf("mac") >= 0;
+    }
+  }
 }
diff --git a/alpha/alpha-server/src/main/resources/application.yaml b/alpha/alpha-server/src/main/resources/application.yaml
index e0d5b23..2a24d57 100644
--- a/alpha/alpha-server/src/main/resources/application.yaml
+++ b/alpha/alpha-server/src/main/resources/application.yaml
@@ -23,6 +23,7 @@ alpha:
     host: ${server.host}
     port: 8080
   feature:
+    native: false # Default disabled Netty Native Transport
     akka:
       enabled: false
       channel: