apache / shenyu

Apache ShenYu is a Java native API Gateway for service proxy, protocol conversion and API governance.
https://shenyu.apache.org/
Apache License 2.0
8.37k stars 2.9k forks source link

[Task] add KitexPlugin #5425

Open loongs-zhang opened 5 months ago

loongs-zhang commented 5 months ago

Description

kitex is a Go RPC framework with high-performance and strong-extensibility for building micro-services.

This plugin should base on WasmPlugin.

You can find useful information here.

The usage documentation for WasmPlugin is here.

Relevant Skills

Know the use of Apache ShenYu, especially the wasm plugin. Familiar with Golang and Java.

Task List

Divyansh200102 commented 5 months ago

Hi, @dragon-zhang I would like to join but I don't have access to wechat in my country so could you please tell is there any other way to get in contact?

GuangmingLuo commented 5 months ago

Hi, what is Kitex used for in Shenyu ? thanks

loongs-zhang commented 5 months ago

Hi, @dragon-zhang I would like to join but I don't have access to wechat in my country so could you please tell is there any other way to get in contact?

Sorry for the late response, I've read the email, it's plan to reply to you after https://github.com/apache/shenyu-website/pull/1006 get merged. BTW, we can talk in email or Tencent Meeting.

loongs-zhang commented 5 months ago

Hi, what is Kitex used for in Shenyu ? thanks

The low-level part of the RPC plugin, I treat it as one of Shenyu's RPC data panels, just like Dubbo.

Treat the code in the Rust as the Golang, and you will find the answer in https://github.com/apache/shenyu-website/pull/1006/files#diff-e3f80caf213bd139c1b2565e82809490a0504c54a368955e934d394059f72f6e

Divyansh200102 commented 5 months ago

Hi, @dragon-zhang I would like to join but I don't have access to wechat in my country so could you please tell is there any other way to get in contact?

Sorry for the late response, I've read the email, it's plan to reply to you after https://github.com/apache/shenyu-website/pull/1006 get merged. BTW, we can talk in email or Tencent Meeting.

Thanks a lot I appreciate it. Email would be good I also plan on working on this project for gsoc

loongs-zhang commented 5 months ago

Hi, @dragon-zhang I would like to join but I don't have access to wechat in my country so could you please tell is there any other way to get in contact?

Sorry for the late response, I've read the email, it's plan to reply to you after apache/shenyu-website#1006 get merged. BTW, we can talk in email or Tencent Meeting.

Thanks a lot I appreciate it. Email would be good I also plan on working on this project for gsoc

At present, it is only proposed and still needs to be reviewed by the official GSOC. This proposal may not be included finally.

Divyansh200102 commented 5 months ago

Hi, @dragon-zhang I would like to join but I don't have access to wechat in my country so could you please tell is there any other way to get in contact?

Sorry for the late response, I've read the email, it's plan to reply to you after apache/shenyu-website#1006 get merged. BTW, we can talk in email or Tencent Meeting.

Thanks a lot I appreciate it. Email would be good I also plan on working on this project for gsoc

At present, it is only proposed and still needs to be reviewed by the official GSOC. This proposal may not be included finally.

I understand.Thank you for the information I really appreciate it

koonchen commented 5 months ago

If this issue doesn't make it into GSOC, I'd like to have a try.

loongs-zhang commented 5 months ago

Welcome to join.

HarshSawarkar commented 5 months ago

Hi @loongs-zhang I would like to work on this issue under GSOC 2024. I have previous open source contribution experience in Apache Repositories. And I have a extensive experience on working with Java and Golang technologies. I am also familiar with Apache ShenYU. Can you please guide?

loongs-zhang commented 5 months ago

Hi @loongs-zhang I would like to work on this issue under GSOC 2024. I have previous open source contribution experience in Apache Repositories. And I have a extensive experience on working with Java and Golang technologies. I am also familiar with Apache ShenYU. Can you please guide?

This ISSUE already contains some information. What additional information do you need? Please tell me more details.

Divyansh200102 commented 4 months ago

I had a few questions regarding the project:

  1. While WASM doesn't natively support threads, how will the KitexPlugin leverage alternative WASM concurrency mechanisms (e.g., WebAssembly SIMD instructions, asynchronous tasks) to handle Kitex's asynchronous service calls efficiently within the WASM environment?
  2. Are there any limitations or specific considerations for handling asynchronous operations within the WASM context for Kitex service calls? This could involve potential deadlocks, race conditions, or limitations on the number of concurrent operations supported by the chosen WASM concurrency approach.
  3. Can the KitexPlugin leverage WASM exception handling mechanisms (if available) to capture and report WASM-specific errors that might occur during Kitex service calls within the WASM module? This could provide more granular error information compared to standard Go errors for debugging purposes.
loongs-zhang commented 4 months ago
  1. While WASM doesn't natively support threads, how will the KitexPlugin leverage alternative WASM concurrency mechanisms (e.g., WebAssembly SIMD instructions, asynchronous tasks) to handle Kitex's asynchronous service calls efficiently within the WASM environment?
  2. Are there any limitations or specific considerations for handling asynchronous operations within the WASM context for Kitex service calls? This could involve potential deadlocks, race conditions, or limitations on the number of concurrent operations supported by the chosen WASM concurrency approach.

The Java part of KitexPlugin uses multithreading, while the WASM part uses single threading.

  1. Can the KitexPlugin leverage WASM exception handling mechanisms (if available) to capture and report WASM-specific errors that might occur during Kitex service calls within the WASM module? This could provide more granular error information compared to standard Go errors for debugging purposes.

At present, WasmPlugin has not considered the error handle part, your suggestion is a good idea.

Divyansh200102 commented 2 months ago

Was there a reason why my proposal of Kitex Plugin not selected for GSOC? @loongs-zhang @moremind Also can I still work on this project?

This was my proposal:_Apache ShenYu KitexPlugin (10).pdf

loongs-zhang commented 2 months ago

Was there a reason why my proposal of Kitex Plugin not selected for GSOC? @loongs-zhang @moremind Also can I still work on this project?

This was my proposal:_Apache ShenYu KitexPlugin (10).pdf

I have reviewed the PR you submitted and it can be seen that your skills will be stronger in the future.