Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

解耦API跟具体实现 #513

Closed
zhenjunMa opened this issue Apr 29, 2022 · 5 comments · Fixed by #549
Closed

解耦API跟具体实现 #513

zhenjunMa opened this issue Apr 29, 2022 · 5 comments · Fixed by #549
Assignees
Labels
good first issue Good for newcomers help wanted Extra attention is needed

Comments

@zhenjunMa
Copy link
Contributor

背景
现阶段, 应用调用 layotto API 的时候会设置一个 store_name 参数,比如应用希望调用的 state api 底层实现是 redis , 那么应用就会把这个参数设置成 redis , 这种方式会带来一些问题,比如应用某一天想从 redis 切换到其他缓存产品,那它就需要通过修改代码的方式来修改store_name 的值为 XXX , 这种做法违背了我们帮助用户平滑跨云部署的目标,因此希望通过增加一层映射关系来解决这个问题。

设计方案
目前的配置文件 config_state_redis.json 中,关于 redis 的配置如下:
image

新的方式:
image
增加一个 type 字段来表示真正的实现组件,而对于现在的名字字段来说可以是用户自定义的,Layotto 在处理请求时首先通过名字找到对应的配置,然后再从 type 字段找到真正的实现组件来处理。

@zhenjunMa zhenjunMa added good first issue Good for newcomers help wanted Extra attention is needed labels Apr 29, 2022
@akkw
Copy link
Contributor

akkw commented May 5, 2022

我做这个吧

@seeflood
Copy link
Member

seeflood commented May 5, 2022

@akkw assigned to u. Thanks!
上手步骤:

  1. 可以先找个quickstart 跟下代码,现在在启动时,把所有组件缓存到 map里、按 storename 作为key ,看明白这块代码
  2. 看明白现在的代码后可以想下怎么改,改造方案就是在配置文件里加个type字段,修改一下缓存的数据结构
  3. 想明白怎么改后,可以先描述下自己准备怎么改,大家帮你把把关,避免返工

过程中遇到问题可以找我或者 @zhenjunMa

@akkw
Copy link
Contributor

akkw commented May 7, 2022

一、配置加载过程

  1. Load Config

image

2.利用Config初始化mosn

image

3.根据MosnRuntimeConfig初始化不同种类的组件

image

4.根据StateManagement初始化具体组件

image

二、解耦方案

image

修改前: map中key含义为组件类型 修改方案:将map中key含义变更为组件name,在*Config中增加ComponentType字段用来表示组件类型。

image

在init*时,Create 传入ComponentType

问题
有没有遗漏的修改点?
字段名叫ComponentType是否合适。

@seeflood
Copy link
Member

seeflood commented May 8, 2022

有没有遗漏的修改点?

@akkw 棒,看着没有遗漏的,挺好的,可以动手写了 👍
已有的 json 文件、示例demo里如果有json,记得也修改下、加个type字段

字段名叫ComponentType是否合适。

感觉叫Type 就行?

	Type    string `json:"type"`

@akkw
Copy link
Contributor

akkw commented May 8, 2022

感觉叫Type 就行?

好的

那我开始做了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants