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. | | 丛国庆 | | 15841721...@163.com |