Java-Chassis2.8分支的ServicePathManager初始化流程的健壮性不足
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 25/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- java
- Lĩnh vực
- backend-api-design, distributed-systems
Hướng nghiên cứu
Bắt đầu bằng cách lần theo RestEngineSchemaListener#onCreateMicroserviceVersion và quá trình khởi tạo MicroserviceVersion, sau đó kiểm tra EdgeInvocation#edgeInvoke và SCBEngine#ensureStatusUp. Xác nhận những đường dẫn tạo nào có thể diễn ra trước khi đăng ký EventBus. Hoàn tất khi mọi MicroserviceVersion đều có ServicePathManager của mình và bộ điều phối edge xử lý việc kiểm tra trạng thái bắt buộc.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
问题原理分析
Java-Chassis做微服务调用的时候, 要求能从 MicroserviceMeta 中取出 ServicePathManager 实例. 而将 ServicePathManager 设置进 MicroserviceMeta 的逻辑是在 RestEngineSchemaListener#onCreateMicroserviceVersion 方法中执行的. 这个监听器从 guava EventBus 监听 CreateMicroserviceVersionEvent 事件, 并创建 ServicePathManager 与对应的 MicroserviceVersion 关联起来.
RestEngineSchemaListener 是在BEFORE_REGISTRY事件阶段注册到 EventBus 的, 也就是说, 如果有MicroserviceVersion对象是在RestEngineSchemaListener注册到 EventBus 之前创建的, 则它无法触发 RestEngineSchemaListener 执行上述动作, 也就不会有对应的 ServicePathManager 对象. 而且, 这个问题是不可恢复的, 一旦MicroserviceVersion对象有这个问题, 除非重启, 否则它一直会保持有问题的状态, 导致consumer端一直调用不了对应的producer微服务.
例如, EdgeService场景下, EdgeInvocation#edgeInvoke 就会触发创建MicroserviceVersion对象, 这是有可能在 BEFORE_REGISTRY 事件之前触发的(它不在SCBEngine#ensureStatusUp的保护范围之内).
建议
- 能否取消
RestEngineSchemaListener, 目前它做的事情就是在MicroserviceVersion对象创建出来的时候, 创建一个ServicePathManager对象与之对应. 这个流程能否挪到MicroserviceVersion自身的初始化方法中? - edge Dispatcher中也应该做
SCBEngine#ensureStatusUp状态检查.
这两条都有价值做, 因为建议2无法完全拦截建议1涉及的场景.
- Ngôn ngữ chính
- Java
- Star
- 1.9k
- Fork
- 813
- Merge trung bình
- 8 ngày 23 giờ
- Pull request đã merge (30 ngày)
- 1
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của apache/servicecomb-java-chassis
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
apache/servicecomb-java-chassis#5106 ·
-
question
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
apache/servicecomb-java-chassis#5153 · 1 bình luận ·
-
[QUESTION] - 请发布3.x的最新版本 Đang mởquestion
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 25/100
apache/servicecomb-java-chassis#5146 ·
-
[FEATURE] - When will ServiceComb support Spring Boot 4.x, Spring Framework 7.x, and Jackson 3.x? Đang mởenhancement
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 25/100
apache/servicecomb-java-chassis#5145 ·
-
2.x bug
apache/servicecomb-java-chassis#5141 · 1 người được giao ·
Tất cả issue của apache/servicecomb-java-chassis
Issue tương tự
-
documentation
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
inu-appcenter/memorIN-backend#288 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
-
frontend maui-pilot pilot-ask question
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
-
executions.Query — startDate and timeRange filters are sent with inverted comparison operators Đang mởarea/plugin
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
kestra-io/plugin-kestra#190 ·