About Me
My name is Cong Guoqing. I graduated from Harbin Institute of Technology with a
bachelor's degree and majored in software engineering with a master's degree in
Shandong University.
In 2021, I had an internship at SenseTime. As a software development engineer,
I participated in building Cosine open source community, and I am familiar with
git collaborative development.
As a Java programmer, Dubbo is equivalent to Spring in the field of business
development, and I often use Dubbo in business. This opportunity would like to
participate in the integration of Dubbo and cloud native ,and I could
contribute to the development of Dubbo.
I love programming and can commit 40 hours a week. When personal work conflicts
with GSoC, I try to balance the two and quickly return to GSoC when the work at
hand is completed. During the holidays, I will devote myself to the open source
work and ensure that I can finish the task on time. Please rest assured that my
tutor and the organization can rest assured.
Personal Technology Stack
Java(proficient), Spring WebFlux(familiar), SpringBoot(familiar), Spring Cloud
Alibaba(familiar), Typescript+React(proficient), Go(know).
Proficient with Docker+Swam. Understand K8S operation mechanism.
The Project Design
1. Application startup
l Dubbo application process aligned with Sidecar lifecycle
○ Ensure that Sidecar detects that the Endpoint is healthy after normal startup.
Preliminary solution: The Dubbo application connects to Sidecar and sends POST
/HealthCheck/OK
○ Operating state: Check the health check to ensure survival
○ If the Dubbo application goes offline gracefully, Sidecar must be able to
sense that the Endpoint is offline.
Preliminary solution: Send POST /HealthCheck /fail
l In the startup process, except for life cycle alignment, other major actions
need to be reduced, which has little impact on the main mesh process.
2. Health check
Run state, which verifies whether the Dubbo application is healthy through an
envoy health check. At present, Triple protocol realizes Health check based on
the Health interface of gRPC. You need to support the Envoy'S HTTP health check
Filter.
3. The service registry
The most mature of the registries supported in ISTIO is Kubernetes, and the
Kubernetes Registry is recommended for phase one. At present, there is an
implementation of Kubernetes Registry, which is mainly stored in Kubernetes
ETCD in the form of CRD:
l Metadata content is stored in annotations.
l Application name corresponds to Kubernetes Service model.
l Hosts: {IDL service name}.{namespace}.svc.cluster.local But for Kubernetes
service registration is still missing a lot of content, application level
service registration needs to consider the interface name and application name
mapping relationship, in addition to the custom label, namespace, etc., need to
increase the external configuration.
4. Service discovery
The problem of service discovery is how to trigger service discovery on the
data side. The current operation of Pilot is to discover the full Service and
Workload data from Kubernetes on the first cluster startup, and send the
Service discovery data to the Pilot Agent instance via xDS, and then push it
increments. In the service discovery phase, the Dubbo application only connects
to the Envoy and does not initiate any subscriptions.
5. The service call
The interconnection of load balancing policies is performed by Sidecar instead
of Dubbo.
Store the routing rules to Kubernetes API Server and register Kubernetes CRD
resources as the storage of routing rules. Routing rules are delivered to
Sidecar through RDS, and Sidecar acts as a service route.
Schedule
5.21-7.1: Discuss the overall idea with the supervisor, write design documents,
and plan the overall scheme of the project.
7.2-7.23: The first stage of development, firstly develop the health check
function of the application startup part, this stage is mainly to get familiar
with the code.
7.24-9.4: The second phase of development, the development of health inspection
and service registration, so that Dubbo can better use K8S as the registry,
changing the original registry.
9.5-10.1: Phase 3 development, revamping Dubbo service discovery.
10.1-11.1: The fourth stage of development, Sidecar access, thin SDK closure
and integration testing.
11.2-11.12: Sorted out projects and wrote defense reports.
Personal Project Experience
1. Qing Gateway—Design and implementation of high-performance responsive gateway
The Qing Gateway is a high-performance, multi-protocol, scalable, distributed,
responsive API Gateway with an interactive management platform interface. The
single-machine Gateway can withstand 10W QPS flow, the Gateway processing loss
is only 1-3ms, and the performance is as good as that of Spring Cloud Gateway.
Compatible with mainstream microservice tools: Nacos, Redis, MySQL. Based on
the SPI mechanism, hot swap is supported. Users can customize the development
to meet the current and future requirements of users in various scenarios.
l Multiple design patterns: chain of responsibility, singleton, factory, and
listener are used to enhance code readability, maintainability, and
extensibility.
l Based on NIO synchronous non-blocking, responsive mode, increased gateway
throughput.
l The routing rules, service instance data and other information are cached in
the JVM memory, so that the loss of the gateway to process the request in the
early stage is very low, only 1-3ms.
l For log processing and QPS collection, block queue and merge processing are
adopted to reduce network I/O times and greatly improve performance.
l The idea of plug-in enhances the user's custom expansibility.
2. Implementation of non-intrusive edge computing framework based on cloud edge
collaboration
The edge computing platform was built based on Swam + Docker + Zuul +
SpringCloud + Spring Batch.
l Zuul serves as a traffic entry point and its dynamic routing rules are
intelligently changed by Swam monitoring the current online service.
l Spring Batch is used for edge and central database synchronization.
l The core of the whole system is that the background service will monitor the
server of the Swam Master node, and then Master the operation status of the
circle Master node and the central node. When any of the nodes go down, the
decision engine will decide the implementation of the policy. If the circle
Master node goes down, its service and data will be migrated to the central
node.
| |
丛国庆
|
|
[email protected]
|