Skip to main content

25 posts tagged with "Apache ShenYu"

View All Tags

· 2 min read

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

· 3 min read

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.

· 3 min read

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

· 4 min read

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.

· 5 min read

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.

· 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

· 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

· 5 min read

New Committer Introduction

Name: Kunshuai Zhu

University: Northeastern University

Role: Apache ShenYu Committer

Email: jooks@apache.org

Contact Open Source

In the second semester of my sophomore year, by chance, I saw the promotion of the Open Source Software Supply Chain Lighting Program (hereinafter referred to as the Summer of Open Source) organized by the Institute of Software of the Chinese Academy of Sciences and the openEuler community. Later, I slowly learned that there were so many people active in the open source community in China, which greatly promoted the development of the open source ecosystem. It was also a very coincidence that I met the VP (Xiao Yu) of Apache ShenYu, who was my mentor in the Apache ShardingSphere community during the summer of open source. After I completed the task of open source summer ahead of schedule, I saw that ShenYu had just entered the Apache incubator, and it was in full swing, so I started to contact Apache ShenYu.

Grow In The Community

My earliest contribution to ShenYu was not code, but documentation. At that time, I found a few typo on the official website, so I decisively submitted a pr and become ShenYu's Contributor.

Later, after participating in the regular meeting of the community, I found that ShenYu, as an Apache incubator project, actually still has many places to be optimized and enriched. So, I started with integration testing and started the journey of fighting monsters and upgrading.

In fact, there are a lot of things that can be learned by doing integration testing, from Docker, CI to ShenYu's functional implementation details, microservice ecology and so on. Sometimes inappropriateness of the official website documentation is found during testing, so you need to read the source code yourself, understand the code logic, and then improve or correct the documentation; sometimes some bugs are found, so you can be familiar with ShenYu gateway in locating bugs and fixing bugs details. Later, you can gradually implement some new features yourself.

While getting familiar with the ShenYu project, the sense of awe for ShenYu is also getting higher and higher. Design patterns, asynchronous programming, functional programming, etc. in ShenYu are all very ingenious and worth learning.

Harvest In Open Source

Looking back on the past six months since I participated in open source, I feel that I have gained a lot, which is mainly reflected in the following aspects.

  1. Improvement of technical level. Participating in open source can not only get in touch with a lot of knowledge that cannot be learned in school, but also can see the practical scene of "slaying dragon martial arts" that I have learned. As an API gateway, Apache ShenYu is the entrance to the entire microservice system. While participating in the project construction, you will naturally be exposed to various knowledge in the field of microservices.

  2. Broaden the horizons. Personally experiencing the discussion of the new feature of the project and participating in activities such as ApacheCon and the Open Source Annual Conference have enabled me to have a more systematic understanding and thinking about the microservice ecology and development trends.

  3. Help with job interviews. The addition of open source experience on my resume has really helped me in my interview for an internship, and it has also been affirmed by the interviewer.

Some Advice For Newcomers

  1. Adapt to asynchronous communication. Different from our usual communication methods, the open source community often uses asynchronous communication methods, such as mailing lists, GitHub issues, Jira, etc. The priority of the communication methods recommended by the Apache ShenYu community is: mailing list > Github issue > WeChat group . This is because through the mailing list and github, the discussion process and results of the issue can be retained, which is open and transparent. On the other hand, throwing questions on the mailing list is often the quickest and most effective solution.

  2. Actively participate in discussions. Community trumps code, this is what the Apache Way advocates. The code obtained through full communication and discussion is more vibrant. In addition, the Apache ShenYu community will hold an online regular meeting every two weeks, which will periodically summarize the work of the community, as well as the goals and tasks after the discussion (and will also be posted to the mailing list).

  3. How to contribute? The first is after the above-mentioned discussion, and then the hands-on. For those who have not applied ShenYu in their work, writing integration tests and source code analysis articles is a very good entry point. At the same time, the Apache ShenYu community often publishes a lot of easy or difficult tasks, and we all look forward to your participation.

  4. Advice for current students who want to get involved in open source but haven't done it yet. Participate in open source boldly. Among the several open source communities I have come into contact with, students are more friendly, expectant and tolerant. In addition, some organizations will hold activities to guide student groups to participate in open source, such as Open Source Summer (mentioned above), GSoC (Google Summer of Programming), etc., which are also very good ways to participate, not only will there be generous bonuses, but also Get to know a lot of friends and tech giants.

· 5 min read

New Committer Introduction

Hello everyone, my name is qicz, and I am very honored to be invited by the Apache ShenYu community to become Apache ShenYu Committer. I am a "unknown" programmer. Miscellaneous, because I was also a part of entrepreneurship that year and that month. At that time, I often had to choose a different programming language to practice miscellaneous. In the process, there were more opportunities to learn about and contact many varieties of projects. . I am also an open source enthusiast, and I like "playing with code", so I often find myself in the open source community. I have always been adhering to the concept of open source and have worked on several open source projects. There are often many fun and interesting open source projects in the community, and Apache ShenYu is one of them. Next, I will briefly share with you my feelings during the time I participated in the Apache ShenYu community。

Mental journey

​ I learned that Soul is a very early time. The official contact with Apache ShenYu was in September of this year. At that time, I just received the company's gateway demand, and it took a short time to master and produce something.

​ For gateway projects, there have been studies before, such as Spring Gateway, Kong, etc. After this period of research and continuous participation in the Apache ShenYu project, I am very satisfied with its design concept-plug-in, everything is done based on plug-ins. Although gateways like Kong also support plug-ins, lua is really not fun. The other is that Apache ShenYu's documentation is also very rich, explaining the core design and the principles of some plug-ins in a very detailed manner. Apache ShenYu is implemented in Java. As a no-brand designer, I am still very porridge. But despite this, it is really painful to study it. The first time I saw the source code of Apache ShenYu, it was very big, and the modules were divided into many details.

Everything is difficult at the beginning, and it may be smooth if you have a good beginning. My beginning was about the processing of crossfilter, and put the configuration written in the code into the external configuration file. Looking back on the process of submitting pr for the first time, it was really boring, and I still feel too painful until now.

Provide Pull Request

​ First of all, all issues, prs, and emails must be in English. I haven't written things in English for some time. Many times I have written by myself. I can't believe and determine if there is a problem with what I wrote. It is estimated that many times I have done Chinese English. However, based on my many years of entrepreneurial experience, everything is a paper tiger. In many cases, as long as I keep on doing it, it will get better and better. Up to now, the constant use of English to organize all kinds of things has become more and more comfortable. Happy! Beautiful! Wonderful!

​ Another, every time you submit the checkstyle and test of pr, it is also very boring. Because the source code has very strict specifications, from comments to line breaks to punctuation. I have been in contact with programming since I was in college. Because the instructor asked us to pay attention to the coding style, we have strictly required our own coding until today, and constantly practiced my code cleanliness skills. I think my coding is very standardized, but I was really defeated in the first pr. On the one hand, the process is not very clear. On the other hand, because of the large number of modules, the local package checkstyle is very slow, and many problems require a complete package process to be exposed. I remember the longest time since it took almost 2 hours.

This process is really too painful. But after many attempts, the first pr succeeded. The difficult beginning is over. But from a personal point of view, it is very supportive and agreeable. If there is no such meticulous requirement, how can we better build this project and community, and use this as a basis to help and serve more small partners.

Community and company integration

​ In the process of continuously matching the company's needs, the research on Apache ShenYu is also constantly deepening. I started to do some customized development. In the process, other bugs were constantly discovered, so there were second, third and more prs. In this process, many times are completed on weekends or staying up late. It is really tiring, but it is still very fulfilling. Especially when my own PR solves the actual needs and is recognized by the community at the same time, it is really an achievement. Feeling full.

​ With the passage of time, I now have a deep understanding of Apache ShenYu. In the future, I will do my best to devote my spare time to the construction of the community and gather actual needs, regardless of the design and development of various features. Adhere to the original intention of open source-from the community to give back to the community, make more contributions to the community, and grow together with the community.

· 2 min read

Introduction of new PPMC

Community Contribution

  • Deeply involved in the development of Apache ShenYu plug-in system (GRPC plugin, etc.).

  • Practice the Apache Way, be active in the community, help others, and actively participate in source code activities and official website documentation construction.

Community Experience

  • Community over code: Creating a good community atmosphere is important, more important than writing code. Apache ShenYu (incubating) community is also constantly improving, constantly improving, as much as possible to allow newcomers to participate, lower the threshold.

  • Transparent and open decision-making: Whether it's community development, feature development, or user issues are made public and archived on a mailing list.

  • Equality and respect: Focus on technical community communication, your contribution determines your authority.

  • Broaden your horizons: Not satisfied with CRUD in your daily work, participate in open source, your code will be reviewed, see what is good code, learn more about open source projects, and improve your personal technical skills.

  • No contribution is too big or too small: whether you have completed the core function development, or write test cases, or build the official website, modify the documentation, these contributions are the same, will be recognized by the community.