Skip to main content

28 posts tagged with "Apache ShenYu"

View All Tags

[Apache ShenYu 2.6.0 Version Release]

· 18 min read

Apache ShenYu

Apache ShenYu is a responsive API gateway developed using Java Reactor. With its high performance, dynamic and flexible traffic control, hot swap, easy deployment and other features, out of the box to provide users with a full lifecycle of 'API' gateway, including 'API' registration, service proxy, protocol conversion, 'API' documentation and 'API' governance and other functions. Apache ShenYu graduated as an Apache top-level project in 'July 2022'.

website: https://shenyu.apache.org

GitHub: https://github.com/apache/shenyu

Version preview

Six months later, Apache ShenYu released version 2.6.0, which submitted a total of 280+ Pull requests, added about 20+ new features, added several enhancements, refactored several features, and fixed several bugs. A total of 78 contributors participated, with a cumulative total of 350+ contributors.

version records: https://github.com/apache/shenyu/compare/v2.5.1...v2.6.0

New Feature

  1. Supports the plug-in upload function and gateway hot load plug-in

the specific use please see: https://shenyu.apache.org/zh/docs/next/developer/custom-plugin

specific pr please see: https://github.com/apache/shenyu/pull/4392

  1. Apollo is supported as the data synchronization and registry
sheneyu:
sync:
apollo:
appId: shenyu
meta: http://localhost:8080
env: dev
clusterName: test
namespace: application

specific pr please see: https://github.com/apache/shenyu/pull/4532

  1. The springboot client can be dynamically configured on the shenyu client

  2. Add the TCP plug-in

the specific use please see: https://shenyu.apache.org/zh/docs/next/plugin-center/proxy/tcp-plugin

specific pr please see: https://github.com/apache/shenyu/pull/4607

https://github.com/apache/shenyu/pull/4766

  1. Support springmvn(boot) to collect api-meta data from shenyu client

specific pr please see: https://github.com/apache/shenyu/pull/4600

  1. Add support for the shenyu ingress controller

the specific use please see: https://shenyu.apache.org/zh/docs/user-guide/kubernetes-controller/build-deploy

https://shenyu.apache.org/zh/docs/user-guide/kubernetes-controller/config

specific pr please see: https://github.com/apache/shenyu/pull/4620

配置如下:

shenyu:
netty:
http:
sni:
enabled: true
mod: k8s #k8s模式适用
defaultK8sSecretNamespace: shenyu-ingress #默认secret资源的namespace
defaultK8sSecretName: default-cert #默认secret资源名字
  1. Add a zookeeper, naocs, Apollo, HttpLongPolling, consul as shenyu service discovery

specific pr please see: https://github.com/apache/shenyu/pull/4636

https://github.com/apache/shenyu/pull/4657

https://github.com/apache/shenyu/pull/4802

https://github.com/apache/shenyu/pull/4795

https://github.com/apache/shenyu/pull/4800

https://github.com/apache/shenyu/issues/4562

  1. Add Huawei Cloud lts log collection

specific pr please see: https://github.com/apache/shenyu/pull/4812

  1. Add opengauss database support

specific pr please see: https://github.com/apache/shenyu/pull/4856

10.添加polaris作为shenyu的数据同步和注册中心

shenyu:
sync:
polaris:
url: 127.0.0.1:8093
namespace:
fileGroup:

specific pr please see: https://github.com/apache/shenyu/pull/4410

https://github.com/apache/shenyu/pull/4897

  1. Add shenyu matching cache
shenyu:
selectorMatchCache:
## selector L1 cache
cache:
enabled: false
initialCapacity: 10000 # initial capacity in cache
maximumSize: 10000 # max size in cache
## selector L2 cache, use trie as L2 cache
trie:
enabled: false
cacheSize: 128 # the number of plug-ins
matchMode: antPathMatch
ruleMatchCache:
## rule L1 cache
cache:
enabled: true
initialCapacity: 10000 # initial capacity in cache
maximumSize: 65536 # max size in cache
## rule L2 cache, use trie as L2 cache
trie:
enabled: false
cacheSize: 1024 # the number of selectors
matchMode: antPathMatch

the specific use please see: https://shenyu.apache.org/zh/docs/next/user-guide/property-config/client-property-config

specific pr please see: https://github.com/apache/shenyu/pull/4417

https://github.com/apache/shenyu/pull/4536

  1. Added support for prometheus for shenyu admin

specific pr please see: https://github.com/apache/shenyu/pull/4336

  1. Expose the endpoints of shenyu actuator

Note: You can use pr to view the memory data of shenyu gateway

specific pr please see: https://github.com/apache/shenyu/pull/4637

Check the configuration of actuator:

management:
endpoints:
web:
exposure:
include: "*" # or health,info

Enhanced

  1. Add tags attribute to API doc client

the specific use please see: https://shenyu.apache.org/docs/user-guide/api-doc/shenyu-annotation-apidoc

specific pr please see: https://github.com/apache/shenyu/pull/4362

  1. Add Brpc integration tests

specific pr please see: https://github.com/apache/shenyu/pull/4319

3.Brpc supports shared thread pools

specific pr please see: https://github.com/apache/shenyu/pull/4402

  1. Add mapping types for cryptorRequst and cryptorResponse

specific pr please see: https://github.com/apache/shenyu/pull/4418

  1. Encryption plug-in supports multiple field encryption

specific pr please see: https://github.com/apache/shenyu/pull/4435

  1. Add the p2c load balancing algorithm

specific pr please see: https://github.com/apache/shenyu/pull/4451

  1. Generate a plug-in string using base64 and store it in the plug-in data

the specific use please see: https://shenyu.apache.org/zh/docs/next/developer/custom-plugin

specific pr please see: https://github.com/apache/shenyu/pull/4473

  1. Add the shortest response load balancing algorithm

specific pr please see: https://github.com/apache/shenyu/pull/4488

  1. Add a hash load balancing test case

specific pr please see: https://github.com/apache/shenyu/pull/4383

  1. Add the DetailSerivice test case

specific pr please see: https://github.com/apache/shenyu/pull/4450

  1. Provide broad routing policies

Specific configurations are as follows:

shenyu:
switchConfig:
local: true
collapseSlashes: false #true表示开启宽泛路径支持

specific pr please see: https://github.com/apache/shenyu/pull/4522

  1. Add shenyu-common enums package test cases

specific pr please see: https://github.com/apache/shenyu/pull/4541

  1. Add shenyu-common dto package test cases

specific pr please see: https://github.com/apache/shenyu/pull/4549/

  1. Add the model package test case of add shenyu-admin

specific pr please see: https://github.com/apache/shenyu/issues/4540

  1. Add the shenyu match cache test case

specific pr please see: https://github.com/apache/shenyu/pull/4557

  1. Support k8s probe

specific pr please see: https://github.com/apache/shenyu/pull/4567

  1. Add a service package test for shenyu-admin

specific pr please see: https://github.com/apache/shenyu/pull/4579

  1. Add json support to the API documentation

specific pr please see: https://github.com/apache/shenyu/pull/4591

  1. The SPEL of the mock plugin is secure by default

specific pr please see: https://github.com/apache/shenyu/pull/4606

  1. Add ShenyuClientApiDocExecutorSubscriber test cases

specific pr please see: https://github.com/apache/shenyu/pull/4632

  1. Add test cases for shenyu-client-sofa module

specific pr please see: https://github.com/apache/shenyu/pull/4688

  1. Add 'tag relation' to 'shenyu api doc'

specific pr please see: https://github.com/apache/shenyu/pull/4362

  1. Add start and stop scripts for windows

specific pr please see: https://github.com/apache/shenyu/pull/4673

  1. Add a test case for 'ShenyuSdkClientFactory'

specific pr please see: https://github.com/apache/shenyu/pull/4645

  1. Add websocket synchronization support for shenyu e2e springcloud plugin

specific pr please see: https://github.com/apache/shenyu/pull/4698

  1. Support divide plugin automatically offline

specific pr please see: https://github.com/apache/shenyu/pull/4702

  1. Add the springcloud service instance cache

specific pr please see: https://github.com/apache/shenyu/pull/4705

the specific use please see: https://shenyu.apache.org/zh/docs/next/plugin-center/proxy/spring-cloud-plugin

shenyu:
springCloudCache:
enabled: false # 为true是开启springcloud缓存
  1. Changing the password supports i18n

specific pr please see: https://github.com/apache/shenyu/pull/4758

29.shenyu discovery supports websocket synchronization

specific pr please see: https://github.com/apache/shenyu/pull/4768

  1. Upgrade 'springboot' version to '2.7.13'

specific pr please see: https://github.com/apache/shenyu/pull/4783

  1. Add nacos and zookeeper synchronization test for e2e-springcloud

specific pr please see: https://github.com/apache/shenyu/pull/4747

  1. Add 'api doc client' annotation generation property

specific pr please see: https://github.com/apache/shenyu/pull/4845

  1. Support 'zookeeper' client automatically offline

specific pr please see: https://github.com/apache/shenyu/pull/4806

  1. Support 'Apollo client' automatic offline

specific pr please see: https://github.com/apache/shenyu/pull/4855

  1. Support swagger documents and store them in a database

specific pr please see: https://github.com/apache/shenyu/pull/4849

  1. Support 'nacos client' automatic offline

specific pr please see: https://github.com/apache/shenyu/pull/4890

  1. Add the alibaba dubbo e2e test case

specific pr please see: https://github.com/apache/shenyu/pull/4859

  1. Add the apache dubbo e2e test case

specific pr please see: https://github.com/apache/shenyu/pull/4899

  1. Add shenyu spring sdk test cases

specific pr please see: https://github.com/apache/shenyu/pull/4913

  1. Add sofa e2e test

specific pr please see: https://github.com/apache/shenyu/pull/4919

  1. Add a test case for Apollo data synchronization

specific pr please see: https://github.com/apache/shenyu/pull/4918

  1. Add the Connection pool configuration for the database (hakari)

specific pr please see: https://github.com/apache/shenyu/pull/4938

  1. Add 'idea icon' for shenyu

specific pr please see: https://github.com/apache/shenyu/pull/4951

Refactor

  1. Reconstruct shenyu admin

specific pr please see: https://github.com/apache/shenyu/pull/4355

  1. Optimize the least active balance algorithm

specific pr please see: https://github.com/apache/shenyu/pull/4342

  1. Optimize the compatibility of the first version of shenyu sign plugin

specific pr please see: https://github.com/apache/shenyu/pull/4332

the specific use please see: https://shenyu.apache.org/docs/plugin-center/security/sign-plugin

  1. Optimize the shenyu upstream check logic

specific pr please see: https://github.com/apache/shenyu/pull/4386

  1. Optimize the global version of the project

specific pr please see: https://github.com/apache/shenyu/pull/4394

  1. Optimize the code of 'ShenyuConsulConfigWatch'

specific pr please see: https://github.com/apache/shenyu/pull/4400

  1. Optimize shenyu prefix tree matching logic

specific pr please see: https://github.com/apache/shenyu/pull/4414

  1. Optimize the verification when the rule condition is submitted

specific pr please see: https://github.com/apache/shenyu/pull/4403

  1. Optimize the shenyu-client-websocket client registration code

specific pr please see: https://github.com/apache/shenyu/pull/4462

  1. Add shenyu admin's Micrometer dependent license

specific pr please see: https://github.com/apache/shenyu/pull/4409

  1. Update the maven-assembly-plugin packaging plug-in to version 3.5.0

specific pr please see: https://github.com/apache/shenyu/pull/4673

  1. Optimize the ordering of global plug-ins

specific pr please see: https://github.com/apache/shenyu/pull/4429

  1. Use BearerToken instead of StatelessToken in shenyu admin

specific pr please see: https://github.com/apache/shenyu/pull/4516

  1. Reconstructs the shenyu-logging module

specific pr please see: https://github.com/apache/shenyu/pull/4526

  1. Verify api doc

specific pr please see: https://github.com/apache/shenyu/pull/4564

  1. Optimize shenyu prefix tree and support '*' matching

specific pr please see: https://github.com/apache/shenyu/pull/4569

  1. Optimize the hot loading of plug-ins

specific pr please see: https://github.com/apache/shenyu/pull/4392

  1. Optimize the putPlugin method of 'ShenyuWebHandler'

specific pr please see: https://github.com/apache/shenyu/pull/4598

  1. Refactor Shenyu webfilter

specific pr please see: https://github.com/apache/shenyu/pull/4614

  1. Refactor the oauth2 plguin plug-in

specific pr please see: https://github.com/apache/shenyu/pull/4624

  1. Refactor the continued field of the shenyu selector

specific pr please see: https://github.com/apache/shenyu/pull/4635

  1. Refactor shenyu selection and rule matching cache

specific pr please see: https://github.com/apache/shenyu/pull/4578

  1. Deleted unused generics from the shenyu client

specific pr please see: https://github.com/apache/shenyu/pull/4653

  1. Refactor shenyu's support for sentinel plug-ins

specific pr please see: https://github.com/apache/shenyu/pull/4669

  1. Expose cached data through actuator terminals

specific pr please see: https://github.com/apache/shenyu/pull/4637

https://github.com/apache/shenyu/pull/4658

  1. Refactor the checkUserPassword method to boot without printing a known error log

specific pr please see: https://github.com/apache/shenyu/pull/4697

  1. Add parameters for printing logs

specific pr please see: https://github.com/apache/shenyu/pull/4637

  1. Reconstructs shenyu global exception handling

specific pr please see: https://github.com/apache/shenyu/pull/4709

  1. Added shenyu plugin to upload integration test

specific pr please see: https://github.com/apache/shenyu/pull/4679

  1. Optimize grammar candy

specific pr please see: https://github.com/apache/shenyu/pull/4700

  1. Optimize discovery_handler_id of discovery_upstream

specific pr please see: https://github.com/apache/shenyu/pull/4710

  1. Reconstruct the shenyu-plugin module and archive proxy plug-ins by category

specific pr please see: https://github.com/apache/shenyu/pull/4765

  1. Refactor the cache of AlibabaDubboConfigCache

specific pr please see: https://github.com/apache/shenyu/pull/4772

  1. Remove hutool dependencies

specific pr please see: https://github.com/apache/shenyu/pull/4773

  1. Refactor 'ShenyuClientShutdownHook'

specific pr please see: https://github.com/apache/shenyu/pull/4780

  1. Add BaseAnnotationApiBeansExtractor Extractor

specific pr please see: https://github.com/apache/shenyu/pull/4787

  1. Support multi-client registration

specific pr please see: https://github.com/apache/shenyu/pull/4790

  1. Refactoring Shenyu-e2e supports Shenyu's check style

specific pr please see: https://github.com/apache/shenyu/pull/4799

  1. Optimize shenyu client registration logic

specific pr please see: https://github.com/apache/shenyu/pull/4809

  1. Add a domain test for the shenyu divide plugin

specific pr please see: https://github.com/apache/shenyu/pull/4803

  1. Update the extension of the rpc_ext field

specific pr please see: https://github.com/apache/shenyu/pull/4821

  1. Optimize consul connection operations

specific pr please see: https://github.com/apache/shenyu/pull/4832

  1. Refactor the yaml addition of springcloud for shenyu e2e

specific pr please see: https://github.com/apache/shenyu/pull/4837

  1. Add integration tests for the k8s ingress controller

specific pr please see: https://github.com/apache/shenyu/pull/4820

  1. Split the document field of the apidoc detail interface and add fields such as requestHeaders and responseParameters

specific pr please see: https://github.com/apache/shenyu/pull/4865

  1. Add a swagger example project to test the functionality of the API documentation

specific pr please see: https://github.com/apache/shenyu/pull/4825

  1. Optimize the display of shenyu admin's form fields in json format

specific pr please see: https://github.com/apache/shenyu/pull/4873

  1. Reconstruct the observability of shenyu logs

specific pr please see: https://github.com/apache/shenyu/pull/4874

  1. Add the bootstrap boot log

specific pr please see: https://github.com/apache/shenyu/pull/4879

  1. Refactor swagger's api documentation

specific pr please see: https://github.com/apache/shenyu/pull/4892

  1. Upgrade grpc version to 1.53.0

specific pr please see: https://github.com/apache/shenyu/pull/4841

  1. Refactor api metadata handlers

specific pr please see: https://github.com/apache/shenyu/pull/4948

  1. Optimize code and pom dependencies

specific pr please see: https://github.com/apache/shenyu/pull/4945

Bug Fixes

  1. Optimize the h2 path

specific pr please see: https://github.com/apache/shenyu/pull/4351

  1. Fix the invocation error of the encryption response plug-in

specific pr please see: https://github.com/apache/shenyu/pull/4331

  1. Fix the jdk8 Map computeIfAbsent performance bug

specific pr please see: https://github.com/apache/shenyu/pull/4338

  1. Fix zombieRemovalTimes code

specific pr please see: https://github.com/apache/shenyu/pull/4368

  1. Rectify the sql error after the upgrade

specific pr please see: https://github.com/apache/shenyu/pull/4374

  1. Delete the detectorOfflineLinks tag

specific pr please see: https://github.com/apache/shenyu/pull/4382

  1. Ignore flat pom

specific pr please see: https://github.com/apache/shenyu/pull/4390

  1. Repair the LOG invocation method

specific pr please see: https://github.com/apache/shenyu/pull/4387

  1. Fix the NPE of sheyu-example-springcloud using nacos

specific pr please see: https://github.com/apache/shenyu/pull/4396

  1. Fix Shenyu-admin name type dispute

specific pr please see: https://github.com/apache/shenyu/pull/4340

  1. Restore the load balancing spi resource

specific pr please see: https://github.com/apache/shenyu/pull/4411

  1. Rectify sql script errors

specific pr please see: https://github.com/apache/shenyu/pull/4412

  1. Fix jackson's 24 hour format and time zone

specific pr please see: https://github.com/apache/shenyu/pull/4413

  1. Fix JwtUtils error

specific pr please see: https://github.com/apache/shenyu/pull/4420

  1. Fix dubbo caller cache bug

specific pr please see: https://github.com/apache/shenyu/pull/4433

  1. Delete the lost HOST

specific pr please see: https://github.com/apache/shenyu/pull/4425

  1. Repair SpringMvcClientEventListener test cases

specific pr please see: https://github.com/apache/shenyu/pull/4252

  1. Fix the zombie update PENDING_SYNC error

specific pr please see: https://github.com/apache/shenyu/pull/4430

  1. Repair memory leaks in the windlfu

specific pr please see: https://github.com/apache/shenyu/pull/4486

  1. Fix the rule query failure caused by too many rules

specific pr please see: https://github.com/apache/shenyu/pull/4499

  1. Fix missing actuator dependencies and port errors in sample http

specific pr please see: https://github.com/apache/shenyu/pull/4506

  1. Fix http and https errors on UpstreamCheckUtils

specific pr please see: https://github.com/apache/shenyu/pull/4509

  1. Fix memory leak caused by FileFilter

specific pr please see: https://github.com/apache/shenyu/pull/4507

  1. Fix the zookeeper synchronization error

specific pr please see: https://github.com/apache/shenyu/pull/4906

  1. The memory leak repair MemorySafeWindowTinyLFUMap errors

specific pr please see: https://github.com/apache/shenyu/pull/4524

  1. Fix ApiDoc path missing separator

specific pr please see: https://github.com/apache/shenyu/pull/4528

  1. Fix shenyu trie's NPE

specific pr please see: https://github.com/apache/shenyu/pull/4533

  1. Fix plugin skip error

specific pr please see: https://github.com/apache/shenyu/pull/4589

  1. Rectify the oracle sql error

specific pr please see: https://github.com/apache/shenyu/pull/4595

  1. Fix shenyu admin can not load shenyu icon issue

specific pr please see: https://github.com/apache/shenyu/pull/4605

  1. Fix the hystrix fallback bug

specific pr please see: https://github.com/apache/shenyu/pull/4593

  1. Fix the warm-up time for divide and springcloud

specific pr please see: https://github.com/apache/shenyu/pull/4619

  1. Fix springcloud service selector

specific pr please see: https://github.com/apache/shenyu/pull/4639

  1. Fix shenyu-spring-boot-starter-plugin-mock add spring.factories

specific pr please see: https://github.com/apache/shenyu/pull/4644

  1. Fix shenyu-client-mvc and shenyu-client-springcloud lost ip

specific pr please see: https://github.com/apache/shenyu/pull/4681

  1. Fix empty rule data and selector data in cache

specific pr please see: https://github.com/apache/shenyu/pull/4716

  1. Fix api documentation module update api details error

specific pr please see: https://github.com/apache/shenyu/pull/4720

  1. Fix getting topic from configuration in KafkaLogCollectClient

specific pr please see: https://github.com/apache/shenyu/pull/4756

  1. Fix thread safety issue with loggingConsole plugin

specific pr please see: https://github.com/apache/shenyu/pull/4763

  1. Fix brpc integration test response size

specific pr please see: https://github.com/apache/shenyu/pull/4784

  1. Fix plugn-Dubco-common selector update gray release to remove cache

specific pr please see: https://github.com/apache/shenyu/pull/4762

  1. Fix shenyu admin menu name bug

specific pr please see: https://github.com/apache/shenyu/pull/4805

  1. Fix the problem that shenyu admin cannot configure consul ports

specific pr please see: https://github.com/apache/shenyu/pull/4843

  1. Fix shenyu client metadata and uri cannot be synchronized with apollo to admin

specific pr please see: https://github.com/apache/shenyu/pull/4851

  1. Fix PathVariable annotation url does not match

specific pr please see: https://github.com/apache/shenyu/pull/4852

  1. Fixed an issue where URIs could not be updated in PathPattern mode

specific pr please see: https://github.com/apache/shenyu/pull/4854

  1. Fix the client close method call twice

specific pr please see: https://github.com/apache/shenyu/pull/4867

  1. Fix shenyu error processing consul configuration

specific pr please see: https://github.com/apache/shenyu/pull/4872

  1. Delete the unused configuration from the Request and modifyResponse plug-ins

specific pr please see: https://github.com/apache/shenyu/pull/4882

  1. Fix the http registration metadata error

specific pr please see: https://github.com/apache/shenyu/pull/4889

  1. Fixed an issue where websocket lost user-defined close status

specific pr please see: https://github.com/apache/shenyu/pull/4844

  1. Fix consul register lost meta path property when special symbol

specific pr please see: https://github.com/apache/shenyu/pull/4885

  1. Fix etcd synchronization errors

specific pr please see: https://github.com/apache/shenyu/pull/4911

  1. Rectify multiple synchronization event errors on shenyu admin

specific pr please see: https://github.com/apache/shenyu/pull/4941

  1. Fix Shenyu motan plugin execution error

specific pr please see: https://github.com/apache/shenyu/pull/4934

Contributors

Special thanks to the following contributors for their support and participation in the '2.6.0' release (in no particular order).

midnight2104,koonchen,847850277,balloon72,yu199195,iwangjie,damonxue,tian-pengfei,caojiajun,dragon-zhang,u3breeze,li-keguo,SuperMonkeyC,mahaitao617,tomsun28,moremind,liaolzy,Ceilzcx,misaya295,BoyuLi4,HaiqiQin,starlight2003,stulzq,ywj1352,yunlongn,aFlyBird0,dengliming,plutokaito,xuyicheng1995,lan-dian,sachin10fi,zuobiao-zhou, hudongdong129,crudboy,aoshiguchen,VampireAchao,JooKS-me,Redick01,huanccwang,lijay7674,omernaci,peng-heng,December-Pb,6freeair2016,jieyangxchen,lianjunwei,u3breeze,eurecalulu,wanyaoasiainfo,wanyaoasiainfo,Kakk22,xuziyang,menglujing,xcsnx,yu1183688986,lahmXu,fabian4,ileonli,VampireAchao,GOODBOY008,TeslaCN

Become a contributor

We welcome every contributor to join ShenYu, and welcome contributors to participate in ShenYu in the spirit of Apache Way!

See the contributor guidelines:

https://shenyu.apache.org/zh/community/contributor-guide

【The Student's Journey of Contributing to Apache ShenYu】

· 2 min read
Haiqi Qin

New Committer Introduction

Name:Haiqi Qin

University:Northeastern University

Role: Apache ShenYu Committer

Email:haiqi@apache.org

Github:https://github.com/HaiqiQin

First encounter shenyu

The earliest contact with Shenyu was through the introduction of classmate Zhu Kunshuai (jooks me), who had already made many contributions in the community and had some experience. After introducing me to the Shenyu community, he constantly guided me, led me to understand the project, explained the relevant regulations of the community, and under his encouragement, I submitted my first PR about open source projects in my life. In the following days, I mainly tried to study the code of Shenyu, modify some small errors, and do some unit tests or Integration testing of plugins.

Gradually reaching a better state

As a developer, I certainly don't want my contribution to Shenyu to be limited to testing type tasks. It was during Shenyu's registration for the Google Summer of Code event, so I actively reviewed the topics and ultimately decided to participate in the Shenyu plugin logging elastic search project. Under the patient guidance of Teacher Xiao Yu (Cat Adult), I finally completed the project and successfully submitted the development related code for Shenyu. Through this project, I have gained a better understanding of Shenyu, and at the same time, I am more eager to continue contributing code to Shenyu. Afterwards, I attempted to contribute two load balancing strategies to Shenyu, and will now and in the future contribute to the Shenyu-e2e module.

Harvest full

  • Learned more about gateways and services.

  • Learned the registration principles of different registration centers.

  • Learned the synchronization principles of different data synchronization methods.

  • Learned how to write more elegant code.

Some suggestions

  • Learn to read official documents. The document is now quite complete and can basically cover the needs of users.
  • Attend weekly meetings. Shenyu holds a regular meeting every two weeks to introduce the current development progress of the project. Friends can choose tasks they are interested in for development, and they can also communicate with the big shots about technology.

Special Thanks

I have always believed that Shenyu is a big family with warmth. When I encountered difficulties, many friends provided me with great help, which saved me from taking many detours when making contributions. Thank you to my friends who have helped me (in any order): yu199195, moremind, JooKS-me, erdengk, qifanyy.

[OSPP 2023 & Apache ShenYu task is coming | Invite you to explore the high performance gateway]

· 9 min read
moremind

OSPP 2023 & Apache ShenYu e2e task is coming

OSPP 2023

Open Source Summer is a summer open source activity initiated and long-term supported by the "Open Source Software Supply Chain Lighting Project" of the Institute of Software, Chinese Academy of Sciences. It aims to encourage students to actively participate in the development and maintenance of open source software, and to cultivate and discover more excellent developers Promote the vigorous development of excellent open source software communities and help the construction of open source software supply chains.

Participate in Open Source Summer

Open source summer 2023 student registration officially opens on April 29! Students can select projects on the official website of Open Source Summer https://summer-ospp.ac.cn/, communicate with mentor, prepare project application materials, and submit applications.

ospp-2023.jpg

Apache ShenYu Introduction

Apache ShenYu is a Java gateway that supports multi-language, multi-protocol (Dubbo, SpringCloud, gRPC, Motan, SofaTars, BRPC), plug-in design, highly dynamic configuration, and highly self-developed. Built-in rich plug-in support, authentication, current limit, circuit breaker, firewall, etc. The traffic configuration is dynamic and the performance is extremely high. Support cluster deployment, support A/B Test, blue-green release and other functions.

The Apache ShenYu community is an open source project community organized by the Apache Foundation. Up to now, a total of 340 contributors have gathered around the world. They participate in ShenYu in the spirit of "Apache Way", make contributions to ShenYu, and grow together with ShenYu!

Apache ShenYu E2E Project Introduction

The task threshold will not be too high, and the whole process will be guided by community tutors.

Project Background

Shenyu is an asynchronous, high-performance, cross-language, responsive API gateway, but currently Shenyu lacks the necessary end to end engine and test case, end to end test is an important part of the shenyu project as a whole.

Required Skills

Understand the technical architecture of Apache ShenYu, understand the end-to-end testing framework of Apache ShenYu, be able to use existing code to write TestSpec, need to understand shenyu's data synchronization framework including websocket, http, zookeeper, nacos, apollo and other middleware and algorithms, be able to write docker-compose, understand the necessary tools for e2e development such as testcontainer and docker.

Tasks

  1. Write shenyu end-to-end test framework, write shenyu end-to-end test engine (difficulty: high)

  2. It is necessary to realize the storage of different databases (mysql, oracle, postgres, h2) of admin in e2e to ensure the correct data storage

  3. It is necessary to ensure that the data can be correctly added to shenyu-admin through the configuration method and shenyu-client registration method (difficulty: high)

  4. Use different data synchronization methods (websocket, http, zookeeper, nacos, apollo) to ensure correct data synchronization from admin to gateway

  5. Add end-to-end test cases of alibaba dubbo, apache dubbo, sofa, tars, motan related proxy plug-ins

  6. Write a specific TestSpec to modify the admin dictionary, metadata, plug-ins, selectors, and rule data, and perform a regression test after the modification to ensure that the calling logic is correct (difficulty: high)

  7. Write the corresponding github ci file to ensure that the ci process works normally in github action

Project Output Requirements

  1. Write the corresponding e2e test case

  2. Use e2e to realize the test that admin uses different databases to store data

  3. Realize the end-to-end test of synchronizing data in different data synchronization methods

  4. Edit the corresponding e2e document

Project technical requirements

  1. Follow shenyu code specification

  2. In-depth understanding of spring webflux

  3. In-depth understanding of shenyu's data synchronization principle

  4. In-depth understanding of shenyu client registration data principles

  5. In-depth understanding of shenyu's end-to-end test engine and framework

Project Repository

Project Website

Other Information

What can you gain from the event?

Development experience

Participate in open source projects, become a contributor to large-scale open source projects, understand multi-field and multi-difficulty gradient tasks, give you rich practical experience in large-scale open source projects, and it is also a good opportunity to exercise your development capabilities!

Organizing committee awards

  1. You will get a completion bonus and a completion certificate: Students who pass the completion assessment will have the opportunity to receive an outstanding student certificate.

  2. There are two difficulty levels in this competition, and different levels correspond to different bonuses:

Advanced Difficulty: RMB 12,000 before tax for student completion bonus

Basic difficulty: RMB 8,000 before tax for student completion bonus

The prize money for this competition is provided by the Summer of Open Source Organizing Committee.

Apache ShenYu community in-depth communication

  1. Participate in the Summer of Open Source @Apache ShenYu project, you will be able to communicate with 300+ contributors in the Apache ShenYu community around the world.

  2. Participate in the Summer of Open Source @Apache ShenYu project, you will become an Apache ShenYu contributor, and after continuing to contribute, you will have the opportunity to become an Apache ShenYu Committer.

Quickly Participate in Open Source Summer

Open Source Summer 2023 community projects will start accepting students to participate in project applications from April 29th. Welcome to communicate with the tutors and prepare project application materials through the contact information above.

shenyu-ingress-controller ability increased

Project background

Kubernetes Controller is an important step in the Apache ShenYu Cloud native construction. The community is building Shenyu-Ingress-Controller to enable the docking of K8s ingress resources. However, currently the shenyu-ingress-controller feature is relatively simple and only supports the resource definition native to K8s ingress.

This project needs to extend Shenyu-Ingress-Controller based on annotation to inherit the rich native functions of Apache ShenYu as much as possible.

Project output requirements

  • Enhanced shenyu-ingress-controller abilities

  • Complete the core code writing

  • Complete corresponding unit test and integration test

  • Complete related documentation

Technical requirements of the project

  • Familiar with Java and Spring Framework
  • Be familiar with Kubernetes
  • Understand the API gateway

Project results warehouse

Project address

https://summer-ospp.ac.cn/org/prodetail/2362f0183

Other information

OSPP 2023 & Apache ShenYu Tcp proxy plugin is coming

OSPP 2023

Open Source Summer is a summer open source activity initiated and long-term supported by the "Open Source Software Supply Chain Lighting Project" of the Institute of Software, Chinese Academy of Sciences. It aims to encourage students to actively participate in the development and maintenance of open source software, and to cultivate and discover more excellent developers Promote the vigorous development of excellent open source software communities and help the construction of open source software supply chains.

Participate in Open Source Summer

Open source summer 2023 student registration officially opens on April 29! Students can select projects on the official website of Open Source Summer https://summer-ospp.ac.cn/, communicate with mentor, prepare project application materials, and submit applications.

ospp-2023.jpg

Apache ShenYu Introduction

Apache ShenYu is a Java gateway that supports multi-language, multi-protocol (Dubbo, SpringCloud, gRPC, Motan, SofaTars, BRPC), plug-in design, highly dynamic configuration, and highly self-developed. Built-in rich plug-in support, authentication, current limit, circuit breaker, firewall, etc. The traffic configuration is dynamic and the performance is extremely high. Support cluster deployment, support A/B Test, blue-green release and other functions.

Apache ShenYu Tcp Proxy Task

The task threshold will not be too high, and the whole process will be guided by community tutors.

Project Background

This project is mainly to realize the proxy of different communication protocols (TCP/UDP/WebSocket, etc.) more flexibly and extensibly through the plug-in method, so as to enhance ShenYu's communication proxy function. The project provides a management background that can manually configure and forward downstream IP, PORT and other data. At the same time, it supports downstream services to automatically register with the ShenYu gateway through the ShenYu client. In addition, it also supports the business to provide the registration center address to complete the service discovery and registration functions. When a business request comes in, ShenYu gateway matches different communication protocol plug-ins according to different communication protocol types to complete the communication proxy.

Project Background

Understand Apache ShenYu's technical architecture, familiar with Java and Spring Framework, familiar with reactor and other front-end components and frameworks, familiar with API gateway, familiar with tcp, udp and other related protocols.

Project Output Requirements

Complete the development of proxy plug-ins such as tcp/udp/websocket

Task1: Complete the development of proxy plug-in functions for tcp/udp/websocket to proxy to downstream services;

✅ Complete the development of registry monitoring metadata

Task1: Monitor business downstream service-related metadata in various registration centers (nacos/consul/zk, etc.) supported by shenyu-admin development;

✅ Complete the data synchronization development of proxy plug-in related metadata

Task1: Complete the development of communication plug-in proxy related data synchronization to the gateway;

✅ Completion and design service automatic discovery of related tables and background data development

Task1: Complete the design of relevant database tables;

Task2: Complete the CRUD development of related tables;

✅ Complete the editing of relevant data of shenyu management background communication agent

Task1: The front end adds a new page for editing metadata related to communication agents;

Task2: Increase the back-end interface corresponding to the front-end page;

✅ Complete the integration test unit test and document output of the communication protocol agent

Task1: Complete the unit test of relevant changes;

Task2: Complete the integration test of the entire function;

Task3: Complete the output of the entire function-related access documents and function introduction-related documents.

Project technical requirements

  1. Familiar with Java and Spring Framework

  2. Familiar with front-end components and frameworks such as reactor

  3. Familiar with API Gateway.

Project technical requirements

Project Address

Mentor email

mahaitao@apache.org

Quickly Participate in Open Source Summer

Open Source Summer 2023 community projects will start accepting students to participate in project applications from April 29th. Welcome to communicate with the tutors and prepare project application materials through the contact information above.

ospp-2023.jpg

[Google Summer of Code & Apache ShenYu task is coming | Invite you to explore the high performance gateway]

· 2 min read
moremind

Google Summer of Code & Apache ShenYu springcloud e2e task is coming | Invite you to explore the high performance gateway

Description

Shenyu is a native API gateway for service proxy, protocol translation and API governance. but Shenyu lack of End-To-End Tests.

Relevant skills:

  • Understand the architecture of ShenYu
  • Understand SpringCloud micro-service and ShenYu SpringCloud proxy plugin.
  • Understand ShenYu e2e framework and architecture.

How to coding

  • please refer to org.apache.shenyu.e2e.testcase.plugin.DividePluginCases

How to test

  • start shenyu admin in docker
  • start shenyu boostrap in docker
  • run test case org.apache.shenyu.e2e.testcase.plugin.PluginsTest#testDivide

Task List

  1. develop e2e tests of the springcloud plug-in.
  2. write shenyu e2e springcloud plugin documentation in shenyu-website.
  3. refactor the existing plugin test cases.

Design and implement shenyu ingress-controller in k8s

Background

Apache ShenYu is a Java native API Gateway for service proxy, protocol conversion and API governance. Currently, ShenYu has good usability and performance in microservice scenarios. However, ShenYu's support for Kubernetes is still relatively weak.

Tasks

  1. Discuss with mentors, and complete the requirements design and technical design of shenyu-ingress-controller.
  2. Complete the initial version of shenyu-ingress-controller, implement the reconcile of k8s ingress api, and make ShenYu as the ingress gateway of k8s.
  3. Complete the ci test of shenyu-ingress-controller, verify the correctness of the code.

Relevant Skills

  1. Know the use of Apache ShenYu
  2. Familiar with Java and Golang
  3. Familiar with Kubernetes and can use java or golang to develop Kubernetes Controller

【From company gateway framework selection to Apache ShenYu Committer】

· 3 min read
Shuo Li

Introduction of new Committer

Hello everyone, my name is Shuo Li , java architect, currently engaged in a big-sized Internet company, It is my honor to be invited by the Apache ShenYu community as the Committer. Let me share with you my first meet, acquaintance, understanding, growth and suggestions with the Apache ShenYu community.

Meet the Apache Shenyu community for the first time

The story starts from 2020. In the early stage, I used SpringCloud Gateway + Nacos Config Event to realize the dynamic routing of gateway by myself. Because there was no dashboard of Gateway at that time, it was very painful. My team made a dashboard based on Micro Enterprise, which has a lot of functionality and limitations. From then on, I started to pursue a good gateway. One day, I found ShenYu, and saw that ShenYu's overall architecture was in sharper contrast to SpringCloud Gateway. ShenYu outperforms Gateway in terms of overall architecture design, function design, plug-in design, etc. ShenYu can be said to be the next generation gateway product. After that, I started to have a certain understanding of Apache ShenYu from building environment to running example project, and then to read plug-in chain and data synchronization, SPI mechanism and other source code.

Start submitting PR

It was not until January 2022 that I started to submit my first PR, which was to fix a problem that caused null Pointers when the Admin module started the default load instance. The function was small, but its significance was remarkable. It meant that I had a good start on the open source road from learning to contributing.

Ongoing open source contributions and gains

So far, I have participated in the open source of Apache ShenYu community for more than half a year, contributing a lot and growing and harvesting a lot. The details are as follows:

  • Witnessed Shenyu graduate from Apache Incubator and become a top Apache project.
  • Fixed ShenYu admin starting null pointer problem.
  • Added ShenYu Rewrite plugin support for PathVariable functionality.
  • Responsible for the functional support of the entire Shenyu-Client-Golang project.
  • Participated in the repair of some discovered problems, integration test writing, code of other CR contributors, corresponding functional documentation writing, etc.

Thanks to the community

Thanks to my friends who helped me or inspired me for free (in no particular order): yu199195,yonglun,luoxiaolong,lianjunwei,gaohan.

A little advice for newcomers

1.Be sure to check out the website or Github first 2.Follow the official website or project documents to try to run the relevant functional modules of Example 3.Feel free to submit an issue to the community if you have any ideas

Attend ShenYu biweekly meetings to keep up with the community and meet with developers one-on-one to ask questions

How to join Apache ShenYu

  1. How to become a Contributor

    The Apache ShenYu community has purposely written a very comprehensive Contributor Guide

  2. Github Issues

  3. Subscribe emails

    Email dev-subscribe@ShenYu.apache.org;

    After the sending is successful, you will receive a reply from dev-subscribe@ShenYu.apache.org, please reply to this email according to the prompt of the email to confirm the subscription;

    After replying to confirm, you will receive a welcome email indicating that you have successfully subscribed to emails.

[From Apache ShenYu User to Apache ShenYu Committer]

· 3 min read
Fengen He

Introduction of new Committer

Hi, everyone, I'm Fengen he, Working as a Java Developer,I am very honored to be invited to be the Committer of the Apache ShenYu community. Let me share with you my growth and suggestions during my participation in the Apache ShenYu community.

First acquaintance with ShenYu gateway

The earliest contact with shenyu was around March 2021. It named soul at that time. Since the business scenarios of the department required the use of a unified gateway, the main reason for choosing the shenyu gateway was that the plug-in design of shenyu was very suitable for the scenarios we needed. Functional plug-ins include divide, sentinel fuse, ratelimiter, protocol conversion of the company's internal rpc, and log2Mongo, etc. With the continuous upgrade of shenyu version, we are also constantly upgrading our code.

When I read Shenyu's code, I like most developers, had the following questions: What exactly is reactive programming? How to write reactive programming? How can shenyu's code be written like this? With these questions, I read the source code of shenyu many times, and then debugged shenyu myself to see how shenyu handles requests and the specific logic of each plugin. During this period, I have also raised many issues in the shenyu community, thank the shenyu community for their help.

My OpenSource experience

The first time I submitted the code to shenyu was in March 2022. At that time, it was mainly found that the request body lost data when using rpc for protocol conversion, and then I found that the data was lost due to the rpc parameter conversion plugin, so I submitted my code to solve the bug of shenyu.

I contributed the following functions:

  • springboot upgrade
  • refactor springcloud plugin
  • refactor cache plugin
  • refactor logging module and logging plugins.
  • refactor shenyu documents

Thanks to the community

Special thanks to everyone who helped me (in no particular order):yu199195,qicz,li-keguo,dragon-zhang,renzhuyan,hutaishi,impactCn,yunlongn。

A few words for open source developers

Open source development is actually a very meaningful and painful thing. It tests a person's endurance. After countless PRs, they may give up due to certain difficulties and problems, but those who persist, whether in terms of technology or communication skills , or open source contributions, there will be certain gains.

Open source is not about doing tasks blindly, nor is it fixed in a certain project or a certain task, but you can participate in any project when you are free. One person will get it quickly, but a group of people will go further!

How to join Apache ShenYu

  1. How to become a Contributor

    The Apache ShenYu community has purposely written a very comprehensive Contributor Guide

  2. Github Issues

【From CRUD Boy to Apache ShenYu Committer】

· 4 min read
Renzhu Yan

Introduction of new Committer

Hello everyone, my name is Renzhu Yan , currently engaged in Java/big data business development in Shenzhen Qianhai WeBank Co., Ltd. I am honored to be invited to be a Committer of Apache ShenYu community. As a business developer, I usually focus on business and then write CRUD, while participating in the open source of Apache ShenYu community gives me a different experience. More attention is paid to the code itself, consider how to support various protocols, plug-in extensions, data synchronization, and more. I would like to share with you my growth and suggestions during my participation in the Apache ShenYu community.

Meet the Apache Shenyu community for the first time

The story timeline has to go back to the end of 2020. At that time, in order to allow us to grow better, the department signed us up for the JAVA advanced training camp of Geek Time, that is, in this training camp, we were fortunate enough to get to know Mr. Cat. Under the leadership of Mr. Mao's source code reading activity, I first came into contact with Apache Shenyu, which was not yet in the Apache incubator, and was also called Soul (hereinafter referred to as Apache Shenyu). The activity of reading the source code of Apache Shenyu lasted for three weeks in total. During the three weeks, we read the source code and blogged every day, from setting up the environment to running the example project, to reading the source code of the plug-in chain and data synchronization. Also have a certain understanding.

Start submitting PR

In May 2021, I started to submit my first PR. At that time, I added a unit test to the Admin module. The function was small, but its significance was extraordinary, it meant that I started from learning to contributing, from playing to open source, which made a good start on the road of open source.

Ongoing open source contributions and gains

So far, I have participated in the open source of Apache Shenyu community for more than a year, and I have made a lot of contributions and gained a lot of growth. Details are as follows:

  • Participated in soul's migration to Apache Incubator and renamed Apache Shenyu.
  • Participate in the writing of unit tests for each module.
  • Responsible for integrating TarsResponsePlugin, GrpcResponsePlugin, SofaResponsePlugin, DubboResponsePlugin, etc. and refactoring them into ResponsePlugin for unified processing.
  • Responsible for Admin Oracle database support.
  • Responsible for the support of Shenyu gateway instance registration to Consul.
  • Participated in the repair of some found problems, sample project writing, JAR package replacement and upgrade, integration test writing, etc.

Thanks to the community

Thanks to my friends who helped me or inspired me for free (in no particular order): yu199195,dragon-zhang,li-keguo,qicz,moremind,zouchangfu,lianjunwei

A little advice for newcomers

Apache Way has a philosophy: community is greater than code, and we firmly believe that a healthy community is more important than good code. After more than a year of participation, I also felt that Apache Shenyu community has put this into practice very well, such as bi-weekly meetings, consensual voluntary tasks, open and transparent community, and enthusiastic help from partners. So today I will also give this sentence to newcomers. The community is bigger than the code. Here, you can try it.

How to join Apache ShenYu

  1. How to become a Contributor

    The Apache ShenYu community has purposely written a very comprehensive Contributor Guide

  2. Github Issues

  3. Subscribe emails

    Email dev-subscribe@ShenYu.apache.org;

    After the sending is successful, you will receive a reply from dev-subscribe@ShenYu.apache.org, please reply to this email according to the prompt of the email to confirm the subscription;

    After replying to confirm, you will receive a welcome email indicating that you have successfully subscribed to emails.

【You can also be an Apache ShenYu Committer】

· 5 min read
Zicheng Zhang

Introduction of new Committer

Hello everyone, my name is Zicheng Zhang , java/rust developer, currently engaged in middleware development in a medium-sized Internet company, work direction includes gateway/RPC/MQ. It is my honor to be invited by the Apache ShenYu community as the Committer. Let me share with you my first meet, acquaintance, understanding, growth and suggestions with the Apache ShenYu community.

First Meet

In mid-August 2021, I joined the current company and transformed into middleware developer (doing business development in my previous company). The first task I received was to familiarize myself with the company's gateway middleware as soon as possible. So a gateway called Soul entered my field of vision (Soul is the predecessor of ShenYu, ShenYu entered the Apache incubator in 2021, the following Soul/ShenYu refers to Apache ShenYu(incubating) ).

Acquaintance

After about a week of study, I have a certain degree of understanding of the code of Soul. In the following 2-3 months, as I continued to help the company's business developer to answer and solve problems, I gradually discovered some parts of the Soul that were not ergonomic.

Until December 2021, out of company needs and personal interests, I started to investigate ShenYu and consider an upgrade plan, and then I really started to contact ShenYu and the community.

Understanding

ShenYu is an asynchronous, high-performance, cross-language, and responsive API gateway. It adheres to the design concept of plugin and full-link asynchronous. At present, many plugins have been integrated for users to choose. If the existing plugins does not meet your needs, you can start customized development by studying the official website documents .

The ShenYu community is active and friendly. In order to allow more people to become Contributor/Committer, new tasks are released from time to time on the issues page of Github. There are many tasks for novices. Even if the released task is a little difficult for you, you can still try to submit a PR. The community members will review your PR and provide some guidance and suggestions to help you improve yourself in the collision of ideas.

My Community Grows

First, I would like to thank the friends in community who helped me for free (in no particular order): yu199195, JooKS-me, KevinClair, lianjunwei, qicz, AhahaGe, hutaishi

Contribution and Gain

  • Learn how to be compatible with both spring-boot 1.x and 2.x, and contribute a lot of solutions.
  • Get familiar with the use of project-reactor and spring-webflux, and then contribute a lot of optimizations.
  • After getting familiar with netty, contributed netty thread pool settings.
  • After getting familiar with dubbo, expanded the dubbo thread pool in ShenYu.
  • Learn about RPCs such as grpc and motan, and contribute to shared thread pool technology.
  • Provide MemoryLimitedLinkedBlockingQueue and MemorySafeLRUMap, which solved the technical paradox.

Suggestion for Contributing to Apache ShenYu

  1. First meet

    Starting from the official website documentation, the first is admin/bootstrap deployment , and then choose a way that you are most familiar with to access ShenYu, and finally send a request to verify whether the access is successful.

  2. Familiar

    After a period of time, you will be familiar with the use of ShenYu. At this point, you can start with an access way and see how the data is finally sent to ShenYu-admin and stored.

  3. Slightly successful

    You are already familiar with a certain code in the registration phase, and you can start to sort out the main link of ShenYu-bootstrap in the running phase according to your access way. At this time, it is not recommended digging into the details of each plugin.

  4. Understanding

    At this time, you already have a certain understanding of the overall situation of ShenYu. Maybe you have discovered some small bugs of ShenYu at this stage, or you think some of ShenYu's postures are not ergonomic, so what are you waiting for?

    Go to the community to see if anyone has the same problem as you, you can submit some BUG/ISSUE/PR, the community will reply you as soon as possible.

  5. Outstanding

    As you continue to participate in the community, you contribute more and more to the community, and eventually you can help others solve problems and be able to mentor others.

    You are always curious, you learn deeply, and you can stand on the bottom.

    You have a certain big-picture view and can look at optimization from a global perspective.

    You can see the essence of the problem and solve the root problem.

How to join Apache ShenYu

  1. How to become a Contributor

    The Apache ShenYu community has purposely written a very comprehensive Contributor Guide

  2. Github Issues

  3. Subscribe emails

    Email dev-subscribe@ShenYu.apache.org;

    After the sending is successful, you will receive a reply from dev-subscribe@ShenYu.apache.org, please reply to this email according to the prompt of the email to confirm the subscription;

    After replying to confirm, you will receive a welcome email indicating that you have successfully subscribed to emails.

[Apache ShenYu 2.4.3 Version Release]

· 4 min read

After 3 months, Apache ShenYu released version 2.4.3 again. The content of this version has 200+ pull requests, 30+ contributors participated, many new functions have been added, many bugs have been fixed, and many optimizations have been made.

new features

  • Added retry mechanism for Http registration client.
  • Support Content-Type of type octet-stream.
  • Support redirection of Bootstrap URIs.
  • Added local API authorization.
  • Support configuring Dubbo consumer thread pool size.
  • Support failure retry mechanism for Divide plugin.
  • Supports client configuration for Webscoket.
  • Support MemoryLimitedLinkedBlockingQueue.
  • Support Alibaba Dubbo plugin to share thread pool.
  • Support gRPC plugin shared thread pool.
  • Added Metrics plugin.
  • Added Cache plugin.
  • Added Logging RocketMQ plugin.

Optimizations

  • Updated JUnit4 to JUnit5.
  • Optimize password encryption.
  • Optimize and verify the interface parameters of the shenyu-admin module.
  • Optimize the code for initializing data when synchronizing data.
  • Added integration tests for LoggingRocketMQ plugin.
  • Use the timing wheel algorithm in the ScheduledExecutorService class.
  • Refactored the buildHandle method of the registered URI in admin.
  • Optimized the Spring Cloud client to automatically set the port.
  • Refactored JWT plugin to support multi-level Tokens.
  • Optimized gateway netty parameter customization and configurable

Fix Bug

  • Fix the null pointer exception when the CommonUpstreamUtils class is initialized.
  • Fix the judgment when Nacos registration fails.
  • Fixed null pointer exception when logging in unregistered users.
  • Fixed the problem of repeatedly printing the startup log.
  • Fixed the problem that the number of retries and the timeout period did not take effect.
  • Fixed Token parsing error.
  • Fixed the problem that Websocket transmits large data abnormally.
  • Fixed NettyHttpClient plugin not retrying on failure.
  • Fixed CVE-2021-41303 vulnerability. -Fixed the problem that judging all plugin inclusion conditions did not take effect.
  • Fixed Http Headers losing data.
  • Fixed Rewrite plugin not supporting URL placeholders.
  • Fixed the problem of abnormal synchronization data in Nacos.
  • Fix Websocket proxy failure or null pointer exception when ContextPath plugin is open.
  • Fixed port occupancy check for Http registered clients.

remove item

  • Remove Monitor plugin.
  • Remove shenyu-agent module.

Metrics Plugin Instructions

Metrics plugin The plugin is used by the gateway to monitor its own running status (JVM related), request response delay, QPS, TPS and other related metrics.

Use of plugins

Add the metrics dependency in the gateway's pom.xml file.

<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-plugin-metrics</artifactId>
<version>${project.version}</version>
</dependency>

Edit the following in the gateway's configuration yaml file

shenyu:
metrics:
enabled: false #Set to true to enable
name : prometheus
host: 127.0.0.1 #exposed ip
port: 8090 #Exposed port
jmxConfig: #jmxConfiguration
props:
jvm_enabled: true #Enable jvm monitoring indicators

For specific metrics information, please check the official website description: https://shenyu.apache.org/zh/docs/plugin-center/observability/metrics-plugin

Cache plugin instructions

The Cache plugin can cache the results of the target service, and also allows the user to configure the expiration time of the cached results.

Use of plugins

Add the Cache dependency in the gateway's pom.xml file.

<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-plugin-cache</artifactId>
<version>${project.version}</version>
</dependency>

It is suitable for scenarios where data is not frequently updated, requires a large number of calls, and does not require high data consistency.

Logging RocketMQ plugin instructions

The Apache ShenYu gateway receives the client request, forwards the request to the server, and returns the server result to the client. The gateway can record the detailed information corresponding to each request, such as: request time, request parameters, request path, response result, response status code, time-consuming, upstream IP, exception information, etc.

Logging-RocketMQ plugin is a plugin that records and sends access logs to the RocketMQ cluster.

Use of plugins

Add dependencies in the gateway's pom.xml file.

<dependency>
<groupId>org.apache.shenyu</groupId>
<artifactId>shenyu-spring-boot-starter-plugin-logging-rocketmq</artifactId>
<version>${project.version}</version>
</dependency>

The specific configuration and the function of each parameter can be found on the official website: https://shenyu.apache.org/zh/docs/plugin-center/observability/logging-rocketmq

Next version planning

Add cluster plan

  • Added shenyu-proxy module to support ShenYu's cluster mode and dynamic expansion and contraction of gateways
  • Added shenyu-nginx sub-project to connect to Nginx-upstream module

Added multi-language SDK

The multi-language SDK is mainly to allow other types of languages to quickly access the shenyu gateway

https://github.com/apache/incubator-shenyu-client-donet

https://github.com/apache/incubator-shenyu-client-golang

https://github.com/apache/incubator-shenyu-client-python

Added Helm Chart

https://github.com/apache/incubator-shenyu-helm-chart

helm-ci-pipeline

[Apache ShenYu 2.5.1 Version Release]

· 3 min read

Just after Chinese New Year, Apache ShenYu ushered in version 2.5.1. This release has 259 pull requests and 64 contributors. Several new features were added, bugs were fixed, and several optimizations were made.

New Features

  1. Add brpc example
  2. Add spring boot starter plugin brpc&admin
  3. Add brpc-plugin
  4. Add shenyu-client-api-doc
  5. Add sdk duplicate class check
  6. Support diff nacos namespace
  7. Add array method of expression in mock plugin
  8. Support generation of mock data on request
  9. Support user specify http request domain
  10. Add MockRequestRecord
  11. Development shenyu-register-instance-eureka
  12. Support API document Api doc detail mapper
  13. Add api doc ddl
  14. Add TagMapper and TagRelationMapper
  15. Add api and api_rule_relation mapper
  16. Not config rule
  17. Refactor message readers
  18. Add sentinel rule handle parameter
  19. Add shenyu-e2e test engine
  20. Make an Apache Shenyu SSO authentication plugin based on casdoor
  21. Add logging-tencent-cls plugin
  22. Support clickhouse-logging-pugin
  23. Add logging-pulsar plugin
  24. Add new plugin: key-auth
  25. Fix sign plugin DataBufferLimitException error
  26. Fix context-path error

API Changes

Enhancement

  1. Add simpler client annotations for motan
  2. Add simpler client annotations for websocket
  3. Add configuration in starter for motan plugin
  4. Add convenience annotation for shenyu-client-springcloud and shenyu-client-springmvc

Refactor

  1. Refactor some code for mock request of api doc
  2. Refactor logging-clickhouse
  3. Polish maven dependencies of dubbo
  4. Refactor sign plugin
  5. Update ShenyuExtConfiguration
  6. Remove unnecessary singleton
  7. Fix generating mock data in multithreading
  8. Refactor sdk test and processArgument
  9. Refactor DefaultSignService
  10. Fix shenyu-admin rule
  11. Optimized ShaUtil
  12. Fix cache too large
  13. Fix ConcurrentModificationException
  14. Fix sync data in etcd
  15. Refactor shenyu sdk client
  16. Optimize request timeout response
  17. Refactor log module
  18. Refactor shenyu-client-springcloud
  19. Refactor MotanServiceEventListener
  20. Refactor shenyu-admin sync data listener
  21. Refactor shenyu-client-tars
  22. Refactor client sdks alibaba dubbo
  23. Refactor springmvc client
  24. Refactor admin mapper config
  25. Refactor shenyu-plugin-logging
  26. Optimize random algorithm
  27. Refactor random loadbalancer
  28. Refactor logging-kafka

Bug Fix

  1. Remove redundant cookie setting
  2. Fix appAuth delete
  3. fix Cryptor-Request Plugin
  4. To avoid load the same ext plugins repeatedly
  5. Fix the TagRelationQuery
  6. Fix upgrade sql
  7. Fix Nacos register NPE
  8. Fix sandbox json parsing
  9. Prevent the first time from failing to load
  10. Fix plugin update bug by modifying config field setter
  11. Fix postgresql sql
  12. Fix the postgresql error during ShenYu-Admin startup
  13. Fix sentinel can't fuse
  14. Fix TencentClsLogCollectClient
  15. Fix change password error
  16. Fix selector page
  17. Fix request plugin can't replaceCookie
  18. Fix RateLimiterPlugin concurrent handler error

Special thanks to the following contributors for their support and participation in version 2.5.1 (in no particular order).

dragon-zhang, zhengpeng, mahaitao, 愿凌飞, hdgaadd, dayu, SongTao Zhuang, Misaya295 , Shawn Jim , yunlongn , Will , moremind , RayayChung , Kevin Clair , huanccwang , 柯杨 , Kunshuai Zhu , fantiq , youzipi , class , kyeongsun , 杨阳洋 , Liming Deng , 杨文杰 , xcsnx , hnxiaoyuan , dependabot , xiaoyu , wzhangNJ , Zihao Huang , ywj1352 , pandaapo , WuLang , Nineteen , kyeongsun , ableYang , Runqi Zhao , WeiS , Luke.Z , lahmxu , Sinsy , Daming , BoyuLi4 , jakiuncle , Bowen Li , huanccwang , gitchenjh , DamonXue , Wu Daifu , Jiageng , nuo-promise , Guocheng Tang , likeguo , Sixh-PrFor , throwable , renzhuyan , wangteng , qinghai777 , zly123987123 , 奕仁 , 尔等同学 , qifanyyy , Jairo , ousinka