René's URL Explorer Experiment


Title: [Discussion] RPC layer design. · Issue #32 · capa-cloud/capa-java · GitHub

Open Graph Title: [Discussion] RPC layer design. · Issue #32 · capa-cloud/capa-java

X Title: [Discussion] RPC layer design. · Issue #32 · capa-cloud/capa-java

Description: RPC层次设计 1. 两层设计 分为接口层和实现层。 接口层为SOA框架的(契约+接口)层。 实现层为Ctrip的服务调用层(see https://github.com/reactivegroup/capa/issues/31) or AWS的服务调用层。 工作内容 首先需要在SOA SDK上做一些更改,将SOA的接口层和实现层做分割。 然后需要在SOA的接口层中,实现SPI动态加载的功能。 然后需要开发Ctrip的服务调用层和AWS的服务调用层。 问题 两层设计的一...

Open Graph Description: RPC层次设计 1. 两层设计 分为接口层和实现层。 接口层为SOA框架的(契约+接口)层。 实现层为Ctrip的服务调用层(see https://github.com/reactivegroup/capa/issues/31) or AWS的服务调用层。 工作内容 首先需要在SOA SDK上做一些更改,将SOA的接口层和实现层做分割。 然后需要在SOA的接口层中,实现SPI动态加载的功能...

X Description: RPC层次设计 1. 两层设计 分为接口层和实现层。 接口层为SOA框架的(契约+接口)层。 实现层为Ctrip的服务调用层(see https://github.com/reactivegroup/capa/issues/31) or AWS的服务调用层。 工作内容 首先需要在SOA SDK上做一些更改,将SOA的接口层和实现层做分割。 然后需要在SOA的接口层中,实现SPI动态加载的功能...

Opengraph URL: https://github.com/capa-cloud/capa-java/issues/32

X: @github

direct link

Domain: patch-diff.githubusercontent.com


Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[Discussion] RPC layer design.","articleBody":"## RPC层次设计\r\n\r\n### 1. 两层设计\r\n\r\n分为接口层和实现层。\r\n\r\n接口层为SOA框架的(契约+接口)层。\r\n实现层为Ctrip的服务调用层(see https://github.com/reactivegroup/capa/issues/31) or AWS的服务调用层。 \r\n\r\n#### 工作内容\r\n\r\n首先需要在SOA SDK上做一些更改,将SOA的接口层和实现层做分割。\r\n\r\n然后需要在SOA的接口层中,实现SPI动态加载的功能。\r\n\r\n然后需要开发Ctrip的服务调用层和AWS的服务调用层。\r\n\r\n#### 问题\r\n\r\n两层设计的一个问题是,需要针对具体中间件进行定制化开发。例如以上场景中,其实是针对SOA框架进行了定制化开发,如果换一个RPC中间件(dubbo、springcloud等),需要从头开始再重新开发一遍,核心逻辑是没办法复用的。\r\n\r\n![image](https://user-images.githubusercontent.com/22876610/140014274-95e27fec-ff05-4dbe-913a-49296023fbf1.png)\r\n\r\n### 2. 三层设计\r\n\r\n三层设计最大的特点是,把核心逻辑放到抽象层中(CAPA)。\r\n\r\n再在抽象层(CAPA)之上,适配到不同的RPC中间件接口层中,以使调用方的代码保持无感。\r\n\r\n#### 工作内容\r\n\r\n如果要保持对业务代码的无感,那么需要和 **方案一** 一样,在SOA SDK上做一些更改,将SOA的接口层和实现层做分割。\r\n\r\n然后和 **方案一** 一样,**方案一** 是在接口层做了SPI功能,那么 **方案二** 需要在接口层做适配到CAPA的功能。\r\n\r\n#### 问题\r\n\r\n需要抽象层的API和实现层的API,能够适配。像RPC/MQ这些领域,API的定义比较简单清晰,适配起来难度不大;但像DB/KV这些领域,各个中间件的API定义差别较大,适配起来会比较复杂(例如DB的transaction,redis的特殊数据结构...)\r\n\r\n![image](https://user-images.githubusercontent.com/22876610/140009726-f97cdfdc-bccc-49d2-8dfe-2c98b8469465.png)\r\n\r\n### 总结\r\n\r\n#### 从长期发展来看\r\n\r\n三层设计中引入抽象层的好处,是可以做到与具体中间件无关。\r\n假如不引入抽象层(CAPA等),那么必须要为每个具体中间件都开发一套SPI混合云的功能。\r\n短期内是可行的,但从长期来看,这样做容易与社区割裂,相当于自己维护了一套混合云的中间件全家桶。\r\n\r\n而对于三层设计,核心逻辑都在抽象层中,代码编写完成后,只需要对上适配不同的RPC中间件接口层;对下适配不同的RPC中间件实现层即可。\r\n\r\n#### 从代码维护角度\r\n\r\n以及,两层设计是对原有的中间件SDK源码进行修改,需要在中间件SDK内部,找到对应的工厂类或者Provider类,在里面实现SPI这些功能。\r\n如果自己拉一个分支,那么后续和主分支进行同步,也需要维护工作量。并且每个中间件都需要深入学习其源码,进行源码级修改。\r\n\r\n而三层设计,是将SPI功能放到抽象层上,下面的实现层使用的是完整的中间件SDK,不需要对其内部进行更改,只需要适配到最外层的API上就可以。\r\n\r\n如果用面向对象的角度来描述,那么两层设计就像继承,需要更改内部的逻辑;三层设计像组合,不需要更改内部逻辑,而是通过适配的方式。\r\n\r\n#### 没有银弹\r\n\r\n综合考量,如果像RPC/MQ这种,业界已经有比较成熟的抽象层API设计的中间件领域,并且该领域的API比较简单清晰,那么引入抽象层我认为是合适的,我们可以与社区保持一致。\r\n\r\n如果像DB/KV这样具有复杂API结构的中间件领域,可能短时间内开发一套抽象层并且适配到已有的中间件上还是有难度的,可以先采用第一种方案。\r\n","author":{"url":"https://github.com/kevinten10","@type":"Person","name":"kevinten10"},"datePublished":"2021-11-03T06:01:23.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/32/capa-java/issues/32"}

route-pattern/_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format)
route-controllervoltron_issues_fragments
route-actionissue_layout
fetch-noncev2:5f9fee08-cec2-44ce-da00-d80eefbd7e7b
current-catalog-service-hash81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114
request-idDD5E:3173F9:4E6E34E:67EDE7A:698C7BA3
html-safe-noncead0269946cd677ab39105f10c6db62e6f62ff2916aa7bc595abd77c458ed8cb3
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERDVFOjMxNzNGOTo0RTZFMzRFOjY3RURFN0E6Njk4QzdCQTMiLCJ2aXNpdG9yX2lkIjoiMzUwNDI1NzU3Nzk4OTczMzI4NCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac79c4b7f7ea79f6c3e1e28ac45db5f16a4e44179abf5cba530dc8feb5f54611a6
hovercard-subject-tagissue:1043114909
github-keyboard-shortcutsrepository,issues,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///voltron/issues_fragments/issue_layout
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/capa-cloud/capa-java/32/issue_layout
twitter:imagehttps://opengraph.githubassets.com/3c1d0ca287bb0969875581f71e05d907c25a7b10122f3f32dca3668293ec23e8/capa-cloud/capa-java/issues/32
twitter:cardsummary_large_image
og:imagehttps://opengraph.githubassets.com/3c1d0ca287bb0969875581f71e05d907c25a7b10122f3f32dca3668293ec23e8/capa-cloud/capa-java/issues/32
og:image:altRPC层次设计 1. 两层设计 分为接口层和实现层。 接口层为SOA框架的(契约+接口)层。 实现层为Ctrip的服务调用层(see https://github.com/reactivegroup/capa/issues/31) or AWS的服务调用层。 工作内容 首先需要在SOA SDK上做一些更改,将SOA的接口层和实现层做分割。 然后需要在SOA的接口层中,实现SPI动态加载的功能...
og:image:width1200
og:image:height600
og:site_nameGitHub
og:typeobject
og:author:usernamekevinten10
hostnamegithub.com
expected-hostnamegithub.com
None640eeb7b6ff4d8d106235d228c0c286e82592d4d2403227b5b2b4fc5832297a4
turbo-cache-controlno-preview
go-importgithub.com/capa-cloud/capa-java git https://github.com/capa-cloud/capa-java.git
octolytics-dimension-user_id97497199
octolytics-dimension-user_logincapa-cloud
octolytics-dimension-repository_id375015365
octolytics-dimension-repository_nwocapa-cloud/capa-java
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id375015365
octolytics-dimension-repository_network_root_nwocapa-cloud/capa-java
turbo-body-classeslogged-out env-production page-responsive
disable-turbofalse
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release3d444f0a47beeeac94cddbb51c91ab408befe8d4
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://patch-diff.githubusercontent.com/capa-cloud/capa-java/issues/32#start-of-content
https://patch-diff.githubusercontent.com/
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fcapa-cloud%2Fcapa-java%2Fissues%2F32
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub SparkBuild and deploy intelligent appshttps://github.com/features/spark
GitHub ModelsManage and compare promptshttps://github.com/features/models
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
GitHub SponsorsFund open source developershttps://github.com/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/accelerator
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://patch-diff.githubusercontent.com/login?return_to=https%3A%2F%2Fgithub.com%2Fcapa-cloud%2Fcapa-java%2Fissues%2F32
Sign up https://patch-diff.githubusercontent.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fvoltron%2Fissues_fragments%2Fissue_layout&source=header-repo&source_repo=capa-cloud%2Fcapa-java
Reloadhttps://patch-diff.githubusercontent.com/capa-cloud/capa-java/issues/32
Reloadhttps://patch-diff.githubusercontent.com/capa-cloud/capa-java/issues/32
Reloadhttps://patch-diff.githubusercontent.com/capa-cloud/capa-java/issues/32
capa-cloud https://patch-diff.githubusercontent.com/capa-cloud
capa-javahttps://patch-diff.githubusercontent.com/capa-cloud/capa-java
Notifications https://patch-diff.githubusercontent.com/login?return_to=%2Fcapa-cloud%2Fcapa-java
Fork 9 https://patch-diff.githubusercontent.com/login?return_to=%2Fcapa-cloud%2Fcapa-java
Star 14 https://patch-diff.githubusercontent.com/login?return_to=%2Fcapa-cloud%2Fcapa-java
Code https://patch-diff.githubusercontent.com/capa-cloud/capa-java
Issues 7 https://patch-diff.githubusercontent.com/capa-cloud/capa-java/issues
Pull requests 1 https://patch-diff.githubusercontent.com/capa-cloud/capa-java/pulls
Actions https://patch-diff.githubusercontent.com/capa-cloud/capa-java/actions
Projects 0 https://patch-diff.githubusercontent.com/capa-cloud/capa-java/projects
Security 0 https://patch-diff.githubusercontent.com/capa-cloud/capa-java/security
Insights https://patch-diff.githubusercontent.com/capa-cloud/capa-java/pulse
Code https://patch-diff.githubusercontent.com/capa-cloud/capa-java
Issues https://patch-diff.githubusercontent.com/capa-cloud/capa-java/issues
Pull requests https://patch-diff.githubusercontent.com/capa-cloud/capa-java/pulls
Actions https://patch-diff.githubusercontent.com/capa-cloud/capa-java/actions
Projects https://patch-diff.githubusercontent.com/capa-cloud/capa-java/projects
Security https://patch-diff.githubusercontent.com/capa-cloud/capa-java/security
Insights https://patch-diff.githubusercontent.com/capa-cloud/capa-java/pulse
New issuehttps://patch-diff.githubusercontent.com/login?return_to=https://github.com/capa-cloud/capa-java/issues/32
New issuehttps://patch-diff.githubusercontent.com/login?return_to=https://github.com/capa-cloud/capa-java/issues/32
[Discussion] RPC layer design.https://patch-diff.githubusercontent.com/capa-cloud/capa-java/issues/32#top
https://github.com/kevinten10
https://github.com/kevinten10
kevinten10https://github.com/kevinten10
on Nov 3, 2021https://github.com/capa-cloud/capa-java/issues/32#issue-1043114909
https://github.com/reactivegroup/capa/issues/31)https://github.com/reactivegroup/capa/issues/31%EF%BC%89
https://user-images.githubusercontent.com/22876610/140014274-95e27fec-ff05-4dbe-913a-49296023fbf1.png
https://user-images.githubusercontent.com/22876610/140009726-f97cdfdc-bccc-49d2-8dfe-2c98b8469465.png
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.