java分布式开发面试题,微服务配置中心 Apollo解析(1),java工程师面试题

  • com.ctrip.framework.apollo.common.dto.NamespaceDTO ,Namespace DTO 。代码如下:

public class NamespaceDTO extends BaseDTO {

private long id;

/**

* App 编号

*/

private String appId;

/**

* Cluster 名字

*/

private String clusterName;

/**

* Namespace 名字

*/

private String namespaceName;

}

  • x

  • 第 13 行:校验 models 非空。

  • 第 14 至 17 行:初始化 Namespace 的 Role 们。详解解析,见 《Apollo 源码解析 —— Portal 认证与授权(二)之授权》 。

  • 第 18 至 30 行:循环 models ,创建 Namespace 对象们。

  • 第 22 行:调用 RequestPrecondition#checkArgumentsNotEmpty(String… args) 方法,校验 NamespaceDTO 的 env appId clusterName namespaceName 非空。

  • 第 25 行:调用 NamespaceService#createNamespace(Env, NamespaceDTO) 方法,创建并保存 Namespace 到 Admin Service 中。

  • 第 26 至 29 行:当发生异常时,即创建失败,仅打印异常日志。也就是说,在 【第 33 行】,依然提示创建 Namespace 成功。

  • 第 32 行:授予 Namespace Role 给当前管理员。详解解析,见 《Apollo 源码解析 —— Portal 认证与授权(二)之授权》 。

2.2 NamespaceService

在 apollo-portal 项目中,

com.ctrip.framework.apollo.portal.service.NamespaceService ,提供 Namespace 的 Service 逻辑。

#createNamespace(Env env, NamespaceDTO namespace) 方法,保存 Namespace 对象到 Admin Service 中。代码如下:

1: @Autowired

2: private UserInfoHolder userInfoHolder;

3: @Autowired

4: private AdminServiceAPI.NamespaceAPI namespaceAPI;

5:

6: public NamespaceDTO createNamespace(Env env, NamespaceDTO namespace) {

7: // 设置 NamespaceDTO 的创建和修改人为当前管理员

8: if (StringUtils.isEmpty(namespace.getDataChangeCreatedBy())) {

9: namespace.setDataChangeCreatedBy(userInfoHolder.getUser().getUserId());

10: }

11: namespace.setDataChangeLastModifiedBy(userInfoHolder.getUser().getUserId());

12: // 创建 Namespace 到 Admin Service

13: NamespaceDTO createdNamespace = namespaceAPI.createNamespace(env, namespace);

14: // 【TODO 6001】Tracer 日志

15: Tracer.logEvent(TracerEventType.CREATE_NAMESPACE, String.format(“%s+%s+%s+%s”, namespace.getAppId(), env, namespace.getClusterName(), namespace.getNamespaceName()));

16: return createdNamespace;

17: }

  • 第 7 至 11 行:设置 NamespaceDTO 的创建和修改人。

  • 第 13 行:调用 NamespaceAPI#createNamespace(Env, NamespaceDTO) 方法,创建 Namespace 到 Admin Service 。

  • 第 15 行:【TODO 6001】Tracer 日志

2.3 NamespaceAPI

com.ctrip.framework.apollo.portal.api.NamespaceAPI ,实现 API 抽象类,封装对 Admin Service 的 AppNamespace 和 Namespace 两个模块的 API 调用。代码如下:

微服务配置中心 Apollo 源码解析——Portal 关联 Namespace

NamespaceAPI

  • 使用 restTemplate ,调用对应的 API 接口。

3. Admin Service 侧

=======================

3.1 NamespaceController

在 apollo-adminservice 项目中,

com.ctrip.framework.apollo.adminservice.controller.NamespaceController ,提供 Namespace 的 API 。

#create(appId, clusterName, NamespaceDTO) 方法,创建 Namespace 。代码如下:

1: @RestController

2: public class NamespaceController {

3:

4: @Autowired

5: private NamespaceService namespaceService;

6:

7: /**

8: * 创建 Namespace

9: *

10: * @param appId App 编号

11: * @param clusterName Cluster 名字

12: * @param dto NamespaceDTO 对象

13: * @return 创建成功的 NamespaceDTO 对象

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

et/forums/4304bb5a486d4c3ab8389e65ecb71ac0)

AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值