Nacos

聊聊nacos的DistroConsistencyServiceImpl

别来无恙 提交于 2019-11-29 09:27:28
序 本文主要研究一下nacos的DistroConsistencyServiceImpl ConsistencyService nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/consistency/ConsistencyService.java public interface ConsistencyService { /** * Put a data related to a key to Nacos cluster * * @param key key of data, this key should be globally unique * @param value value of data * @throws NacosException * @see */ void put(String key, Record value) throws NacosException; /** * Remove a data from Nacos cluster * * @param key key of data * @throws NacosException */ void remove(String key) throws NacosException; /** * Get a data from Nacos

聊聊nacos的DistroMapper

吃可爱长大的小学妹 提交于 2019-11-29 08:33:30
序 本文主要研究一下nacos的DistroMapper ServerChangeListener nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/cluster/servers/ServerChangeListener.java public interface ServerChangeListener { /** * If member list changed, this method is invoked. * * @param servers servers after change */ void onChangeServerList(List<Server> servers); /** * If reachable member list changed, this method is invoked. * * @param healthyServer reachable servers after change */ void onChangeHealthyServerList(List<Server> healthyServer); } ServerChangeListener定义了onChangeServerList、onChangeHealthyServerList方法

等了 1 个多月,我就自己动手了

邮差的信 提交于 2019-11-29 08:14:22
Photo @ https://danielbachhuber.com/ 文 | 白科 有人问: 开源是为了什么? 这里有一些大家能在网上找到的参考答案。 从个人的视角看 参与开源 可以证明自己的 专业能力 并在行业内获得 认可 释放自己的 兴趣爱好 ⇣ 从企业的视角看 可以建立 技术影响力 对 招聘 、建立商业化 竞争优势 都有帮助 ⇣ 当然还有更 经济学的说法 开源作为一种 生产协作模式 大幅提升了商品的 生产效率和分发效率 阿里巴巴中间件 这一服务号 自去年6月15日发布第一篇文章开始 随着阿里巴巴的一系列微服务开源项目 一起成长 (点击了解成长之路) Dubbo Rocket MQ Sentinel Nacos Arthas Spring Cloud Aliabba Seata ChaosBlade ... 正如您第一次订阅我们时 接收到的自动回复 破土而出的生命力,源自理想主义者心底对技术的信念 我们 尝试把对技术的 情怀、实践 以文字的形式 进行表达和传播 由此聚集了不少的开发者 他们正通过这些开源项目构建自己的微服务架构 还有不少人加入社区, 参与 开源共建 让技术变得更好 为表感谢 2019 年 8 月 12 日 我们向 1349 位社区开发者送出了定制礼品 例如 这是来自 Seata 社区的通知邮件 同时 我们也采访了几位开源贡献者 看看他们是如何看待 开源的

等了 1 个多月,我就自己动手了

一世执手 提交于 2019-11-29 08:11:52
Photo @ https://danielbachhuber.com/ 文 | 白科 有人问: 开源是为了什么? 这里有一些大家能在网上找到的参考答案。 从个人的视角看 参与开源 可以证明自己的 专业能力 并在行业内获得 认可 释放自己的 兴趣爱好 ⇣ 从企业的视角看 可以建立 技术影响力 对 招聘 、建立商业化 竞争优势 都有帮助 ⇣ 当然还有更 经济学的说法 开源作为一种 生产协作模式 大幅提升了商品的 生产效率和分发效率 阿里巴巴中间件这一服务号 自去年6月15日发布第一篇文章开始 随着阿里巴巴的一系列微服务开源项目 一起成长 (点击了解成长之路) Dubbo Rocket MQ Sentinel Nacos Arthas Spring Cloud Aliabba Seata ChaosBlade ... 正如您第一次订阅我们时 接收到的自动回复 破土而出的生命力,源自理想主义者心底对技术的信念 我们 尝试把对技术的 情怀、实践 以文字的形式 进行表达和传播 由此聚集了不少的开发者 他们正通过这些开源项目构建自己的微服务架构 还有不少人加入社区, 参与 开源共建 让技术变得更好 为表感谢 2019 年 8 月 12 日 我们向 1349位社区开发者送出了定制礼品 例如 这是来自 Seata 社区的通知邮件 同时 我们也采访了几位开源贡献者 看看他们是如何看待 开源的

等了 1 个多月,我就自己动手了

回眸只為那壹抹淺笑 提交于 2019-11-29 08:09:52
有人问: 开源是为了什么? 这里有一些大家能在网上找到的参考答案。 从个人的视角看 参与开源 可以证明自己的 专业能力 并在行业内获得 认可 释放自己的 兴趣爱好 ⇣ 从企业的视角看 可以建立 技术影响力 对 招聘 、建立商业化 竞争优势 都有帮助 ⇣ 当然还有更 经济学的说法 开源作为一种 生产协作模式 大幅提升了商品的 生产效率和分发效率 阿里巴巴中间件 这一服务号 自去年6月15日发布第一篇文章开始 随着阿里巴巴的一系列微服务开源项目 一起成长 (点击了解成长之路) Dubbo Rocket MQ Sentinel Nacos Arthas Spring Cloud Aliabba Seata ChaosBlade ... 正如您第一次订阅我们时 接收到的自动回复 破土而出的生命力,源自理想主义者心底对技术的信念 我们 尝试把对技术的 情怀、实践 以文字的形式 进行表达和传播 由此聚集了不少的开发者 他们正通过这些开源项目构建自己的微服务架构 还有不少人加入社区, 参与 开源共建 让技术变得更好 为表感谢 2019 年 8 月 12 日 我们向 1349 位社区开发者送出了定制礼品 例如 这是来自 Seata 社区的通知邮件 同时 我们也采访了几位开源贡献者 看看他们是如何看待 开源的 “简单纯粹的喜爱” GitHub ID: SetDaemon 社区角色:Dubbo 前用户

聊聊nacos的DataSyncer

陌路散爱 提交于 2019-11-29 07:50:19
序 本文主要研究一下nacos的DataSyncer DataSyncer nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/consistency/ephemeral/distro/DataSyncer.java @Component @DependsOn("serverListManager") public class DataSyncer { @Autowired private DataStore dataStore; @Autowired private GlobalConfig partitionConfig; @Autowired private Serializer serializer; @Autowired private DistroMapper distroMapper; @Autowired private ServerListManager serverListManager; private Map<String, String> taskMap = new ConcurrentHashMap<>(); @PostConstruct public void init() { startTimedSync(); } public void submit(SyncTask task,

聊聊nacos config的EventDispatcher

你离开我真会死。 提交于 2019-11-29 07:44:56
序 本文主要研究一下nacos config的EventDispatcher EventDispatcher nacos-1.1.3/config/src/main/java/com/alibaba/nacos/config/server/utils/event/EventDispatcher.java public class EventDispatcher { /** * add event listener */ static public void addEventListener(AbstractEventListener listener) { for (Class<? extends Event> type : listener.interest()) { getEntry(type).listeners.addIfAbsent(listener); } } /** * fire event, notify listeners. */ static public void fireEvent(Event event) { if (null == event) { throw new IllegalArgumentException(); } for (AbstractEventListener listener : getEntry(event.getClass())

聊聊nacos config的RequestLogAspect

依然范特西╮ 提交于 2019-11-29 07:31:14
序 本文主要研究一下nacos config的RequestLogAspect RequestLogAspect nacos-1.1.3/config/src/main/java/com/alibaba/nacos/config/server/aspect/RequestLogAspect.java @Aspect @Component public class RequestLogAspect { /** * publish config */ private static final String CLIENT_INTERFACE_PUBLISH_SINGLE_CONFIG = "execution(* com.alibaba.nacos.config.server.controller.ConfigController.publishConfig(..)) && args" + "(request,response,dataId,group,tenant,content,..)"; /** * get config */ private static final String CLIENT_INTERFACE_GET_CONFIG = "execution(* com.alibaba.nacos.config.server.controller

Spring 社区的唯一一个国产开源项目 - Spring Cloud Alibaba 毕业了

断了今生、忘了曾经 提交于 2019-11-29 07:28:36
阿里妹导读 :一年多前,Java 界最近发生了一件大事,阿里开源 Spring Cloud Alibaba,并推出首个预览版。Spring Cloud 本身是一套微服务规范,并不是一个拿来即可用的框架,而 Spring Cloud Alibaba 的开源为开发者们提供了这套规范的实现方式。同时,Spring Cloud Alibaba 提供的完整的微服务组件、中文文档和本地化的开源服务提高了开发者们接入微服务的速率,并降低了后续的运维难度。 经过一年多的孵化,Spring Cloud Alibaba 作为 Spring 社区的唯一一个国产开源项目,正式从 Spring Cloud Incubator 孵化器毕业,并发布了适配 Spring Cloud Edgware、Finchley、Greenwich 三个版本的新版本。 Spring Cloud Alibaba 是 Spring 社区第一个也是唯一一个国产开源项目。 (官方毕业公告参考 Spring Blog: https://spring.io/blog/2019/07/24/simplifying-the-spring-cloud-release-train) Spring Cloud Alibaba 毕业后从孵化器仓库迁移到了 Github Alibaba 仓库下,新的仓库地址点击 这里 。 新的 maven 坐标如下:

聊聊nacos的ServerStatusManager

梦想的初衷 提交于 2019-11-29 07:03:42
序 本文主要研究一下nacos的ServerStatusManager ServerStatusManager nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/cluster/ServerStatusManager.java @Service public class ServerStatusManager { @Resource(name = "consistencyDelegate") private ConsistencyService consistencyService; @Autowired private SwitchDomain switchDomain; private ServerStatus serverStatus = ServerStatus.STARTING; @PostConstruct public void init() { GlobalExecutor.registerServerStatusUpdater(new ServerStatusUpdater()); } private void refreshServerStatus() { if (StringUtils.isNotBlank(switchDomain.getOverriddenServerStatus())) {