[从源码学设计]蚂蚁金服SOFARegistry之配置信息 目录 [从源码学设计]蚂蚁金服SOFARegistry之配置信息 0x00 摘要 0x01 业务范畴 1.1 配置作用 1.2 学习方向 0x02 数据结构 2.1 目录结构 2.2 数据结构定义 0x03 Meta Server 内流程 3.1 Admin请求响应 3.2 DBService 3.3 Bean 3.4 Listener 3.5 Task 3.6 服务 0x04 调用路径 in Data Server 4.1 Bean…
[从源码学设计]蚂蚁金服SOFARegistry之程序基本架构 0x00 摘要 之前我们通过三篇文章初步分析了 MetaServer 的基本架构,MetaServer 这三篇文章为我们接下来的工作做了坚实的铺垫. 本系列我们接着分析 Data Server,顺带会涉及一些 Session Server.因为 DataServer 和 MetaServer 代码实现和架构的基本套路类似,所以我们主要关心差异点和DataServer的特点. 本文会分析DataServer程序的基本架构. 0x01…
[从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 目录 [从源码学设计]蚂蚁金服SOFARegistry之网络封装和操作 0x00 摘要 0x01 业务领域 1.1 SOFARegistry 总体架构 1.2 应用场景 1.2.1 单元化状态 1.2.2 内网通讯 1.2.3 Http协议 1.3 问题点 1.4 解决方案 1.5 阿里方案 1.6 实现问题 1.7 总述 0x02 基础封装 2.1 Channel 2.1.1 Java Channel 2.1.2 SOFA Ch…
[从源码学设计]蚂蚁金服SOFARegistry网络操作之连接管理 目录 [从源码学设计]蚂蚁金服SOFARegistry网络操作之连接管理 0x00 摘要 0x01 业务领域 1.1 应用场景 0x02 管理内容 2.1 连接管理 2.2 管理内容 0x03 Connection管理 3.1 Connection对象 3.2 Connection类定义 3.3 ConnectionFactory 3.4 MetaServerConnectionFactory 3.5 DataServerCon…
[从源码学设计]蚂蚁金服SOFARegistry之消息总线 目录 [从源码学设计]蚂蚁金服SOFARegistry之消息总线 0x00 摘要 0x01 相关概念 1.1 事件驱动模型 1.1.1 概念 1.1.2 应用环境 1.2 消息总线 0x02 业务领域 2.1 业务范畴 2.2 问题点 2.3 解决方案 0x03 EventCenter 3.1 目录结构 3.2 类定义 3.2.1 操作 3.2.2 执行 & 解耦 3.2.3 Listener列表 3.2.4 ArrayListMult…
[从源码学设计]蚂蚁金服SOFARegistry之消息总线异步处理 目录 [从源码学设计]蚂蚁金服SOFARegistry之消息总线异步处理 0x00 摘要 0x01 为何分离 0x02 业务领域 2.1 应用场景 2.2 延迟和归并 2.2.1 业务特点 2.2.2 问题 2.2.3 解决 2.3 蚂蚁金服实现 0x03 DataChangeEventCenter 3.1 总述 3.2 DataChangeEventCenter 3.2.1 定义 3.2.2 消息类型 3.2.3 初始化 3.…
[从源码学设计]蚂蚁金服SOFARegistry之存储结构 目录 [从源码学设计]蚂蚁金服SOFARegistry之存储结构 0x00 摘要 0x01 业务范畴 1.1 缓存 1.2 DataServer 分片机制 1.3 服务模型 1.3.1 服务发布模型(PublisherRegister) 1.3.2 服务订阅模型(SubscriberRegister) 1.3.3 dataInfoId 1.3.4 版本号 0x02 基本概念 2.1 物理机房DataCenter 2.2 Server节点…
[从源码学设计]蚂蚁金服SOFARegistry之推拉模型 目录 [从源码学设计]蚂蚁金服SOFARegistry之推拉模型 0x00 摘要 0x01 相关概念 1.1 推模型和拉模型 1.1.1 推模型: 特点: 优点: 缺点: 1.1.2 拉模型 特点: 优点: 缺点: 1.2 Guava LoadingCache 0x02 业务领域 2.1 应用场景 2.2 问题点 2.3 解决方案 2.4 阿里方案 2.4.1 各种模型应用 2.4.2 推拉模型 0x03 拉模型 in Session…
[从源码学设计]蚂蚁金服SOFARegistry之时间轮的使用 目录 [从源码学设计]蚂蚁金服SOFARegistry之时间轮的使用 0x00 摘要 0x01 业务领域 1.1 应用场景 0x02 定时任务 2.1 什么是定时任务 2.2 Java定时任务框架 0x03 时间轮 3.1 缘由 3.2 定义 3.3 Netty时间轮HashedWheelTimer 3.3.1 实现 3.3.2 单线程与业务线程池 3.3.3 全局定时器 3.3.4 队列 3.4 Kafka和多层时间轮 3.4.1…
[从源码学设计]蚂蚁金服SOFARegistry 之 自动调节间隔周期性任务 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 自动调节间隔周期性任务 0x00 摘要 0x01 业务领域 0x02 阿里方案 0x03 Scheduler 0x04 无限循环任务 4.1 ExecutorService 0x05 周期任务 5.1 ScheduledExecutorService 0x06 Queue的选择 6.1 ThreadPoolExecutor的queue 6.2 SOFARegi…
[从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 如何与Meta Server交互 0x00 摘要 0x01 业务范畴 1.1 MetaServer的重要性 1.2 推拉模型 1.3 分析策略 0x02 目录结构 0x03 Bean 0x04 Raft协议 0x05 消息处理 5.1 MetaServerChangeEvent 5.2 消息来源 5.2.1 启动 5.2.2 定时 5.2.3 推送…
[从源码学设计]蚂蚁金服SOFARegistry之Data节点变更 目录 [从源码学设计]蚂蚁金服SOFARegistry之Data节点变更 0x00 摘要 0x02 引子 0x03 业务范畴 3.1 DataServer 数据一致性 3.2 节点变更时的数据同步 0x04 总体逻辑 0x05 DataServerChangeEvent 5.1 消息来源 5.1.1 启动 5.1.1.1 产生消息 5.1.1.2 MetaServerChangeEventHandler 5.1.2 推送 5.1…
[从源码学设计]蚂蚁金服SOFARegistry 之 LocalDataServerChangeEvent及数据同步 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 LocalDataServerChangeEvent及数据同步 0x00 摘要 0x02 业务范畴 2.1 DataServer 数据一致性 2.2 本地机房策略 0x03 总体逻辑 0x04 消息 4.1 LocalDataServerChangeEvent 4.2 来源 0x05 消息处理 5.1 LocalData…
[从源码学设计]蚂蚁金服SOFARegistry之服务上线 目录 [从源码学设计]蚂蚁金服SOFARegistry之服务上线 0x00 摘要 0x01 业务领域 1.1 应用场景 1.1.1 服务发布 1.1.2 SessionServer的必要性 1.2 问题点 1.3 阿里方案 1.3.1 注册过程 1.3.2 图示 0x02 Client SDK 0x03 Session server 3.1 Bean 3.2 入口 3.3 策略 3.3.1 目录结构 3.3.2 DefaultPubli…
[从源码学设计]蚂蚁金服SOFARegistry之服务注册和操作日志 目录 [从源码学设计]蚂蚁金服SOFARegistry之服务注册和操作日志 0x00 摘要 0x01 整体业务流程 1.1 服务注册过程 1.2 数据分片 0x02 基础数据结构 2.1 Publisher 2.2 Datum 2.3 DatumCache 2.4 Operator 2.5 Acceptor 2.6 总结 0x03 Datum的来龙去脉 3.1 Session Server 内部 3.2 PublishData…
[从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier 目录 [从源码学设计]蚂蚁金服SOFARegistry 之 ChangeNotifier 0x00 摘要 0x01 业务范畴 1.1 概述 1.2 数据变化 0x02 数据结构 2.1 接口定义 2.2 派生类 2.3 Bean 0x03 流程 3.1 放入消息 3.1.1 PublishDataHandler 3.1.2 DataChangeEventCenter 3.2 消费消息&发送通知 3.2.1 Dat…
[从源码学设计]蚂蚁金服SOFARegistry之续约和驱逐 目录 [从源码学设计]蚂蚁金服SOFARegistry之续约和驱逐 0x00 摘要 0x01 业务范畴 1.1 失效剔除 1.2 服务续约 0x02 DatumLeaseManager 2.1 定义 2.2 续约 2.2.1 数据结构 2.2.2 调用 2.2.3 续约 2.2.4 图示 2.3 驱逐 2.3.1 数据结构 2.3.2 显式调用 2.3.3 启动调用 2.3.4 驱逐 2.3.5 驱逐处理业务 2.3.5.1 转发驱逐…
[从源码学设计]蚂蚁金服SOFARegistry之延迟操作 0x00 摘要 SOFARegistry 是蚂蚁金服开源的一个生产级.高时效.高可用的服务注册中心. 本系列文章重点在于分析设计和架构,即利用多篇文章,从多个角度反推总结 DataServer 或者 SOFARegistry 的实现机制和架构思路,让大家借以学习阿里如何设计. 本文为第十七篇,介绍SOFARegistry的延迟操作. 0x01 业务领域 1.1 业务缘由 为什么要有AfterWorkingProcess? AfterWo…
[从源码学设计] Flume 之 memory channel 目录 [从源码学设计] Flume 之 memory channel 0x00 摘要 0x01 业务范畴 1.1 用途和特点 1.2 Channel 1.3 研究重点 1.4 实际能够学到什么 1.5 总述 0x02 定义 2.1 接口 2.2 配置参数 2.2.1 channel属性 2.4 Semaphore和Queue 2.5 MemoryTransaction 0x03 使用 3.1 channel如何使用 3.2 sour…
上节讲解了read_config函数,读取配置信息到server_config的相应成员变量里,但read_config函数只负责把配置信息重文件里读出来,具体怎么把信息填写到指定的地址内,是调用keywords数组里元素的handler成员指向的函数完成.这节就是讲解完成具体的写入操作中比较复杂的函数. 1) int read_opt(const char *line, void *arg) 在read_config从udhcpd.conf里读到 token = "opt" 或 &q…
上节介绍了存储管理配置信息的结构体struct server_config_t,该结构体贯穿整个server端程序的运行. 在dhcpd.c里的用该结构体定义个一个全局的变量: struct server_config_t server_config; 在server启动做的第一件事就是初始化这个全局变量server_config: 现在就进入read_config函数,一睹其真容! 学习这个函数,在以后遇到要读取配置信息可以参照read_config函数的写法. read_config函数的定…
摘要: 本文来自蚂蚁金服首席技术架构师,基础技术部负责人胡喜.从2010年支撑双十一最高交易峰值2万笔/分钟到2015年双十一的8.59万笔/秒,蚂蚁金服的技术架构和运维体系一直都在不断摸索和实践.本文就“互联网IT运维体系”这一主题,和朋友们分享蚂蚁金服在该领域的实践经验. 8月30-31日20:00-21:30,一场别开生面的技术大会—— “蚂蚁金服&阿里云在线金融技术峰会”将在线举办.本次将聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用…
作者 | 蚂蚁金服技术专家 沧漠 关注『阿里巴巴云原生』公众号,回复关键词"1024",可获取本文 PPT. 前言 Kubernetes 以其超前的设计理念和优秀的技术架构,在容器编排领域拔得头筹.越来越多的公司开始在生产环境部署实践 Kubernetes,在阿里巴巴和蚂蚁金服 Kubernetes 已被大规模用于生产环境.Kubernetes 的出现使得广大开发同学也能运维复杂的分布式系统,它大幅降低了容器化应用部署的门槛,但运维和管理一个生产级的高可用 Kubernetes 集群仍…
自己当初找工作时参加过众多一线互联网公司的Java研发面试,这段时间处于寒冬,然而前几天跳槽找工作,两天面了3家,已经拿了两个offer,觉得可以和大家分享下: 下面为拼多多.饿了么.蚂蚁金服.哈啰出行等公司给我留下较深印象的一些java面试题 private修饰的方法可以通过反射访问,那么private的意义是什么 Java类初始化顺序 对方法区和永久区的理解以及它们之间的关系 一个java文件有3个类,编译后有几个class文件 局部变量使用前需要显式地赋值,否则编译通过不了,为什么这么设计…
电话一面 1.自我介绍.自己做的项目和技术领域 2.项目中的监控:那个监控指标常见的哪些? 3.微服务涉及到的技术以及需要注意的问题有哪些? 4.注册中心你了解了哪些? 5.consul 的可靠性你了解吗? 6.consul 的机制你有没有具体深入过?有没有和其他的注册中心对比过? 7.项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理 8.Spring Boot除了自动配置,相比传统的 Spring 有什么其他的区别? 9.Spring Cloud 有了…
SOFAMesh是蚂蚁金服在ServiceMesh方向上的探索,下面是它高级技术专家敖小剑在QCon上海2018上的演讲. Service Mesh 是一个 基础设施层,用于处理服务间通讯.现代云原生应用有着复杂的服务拓扑,服务网格负责在这些拓扑中 实现请求的可靠传递. 在实践中,服务网格通常实现为一组 轻量级网络代理,它们与应用程序部署在一起,而 对应用程序透明. 加粗部分是重点: 基础设施层:这是 Service Mesh 的定位,今天内容的最后一个部分我会和大家详细展开这个话题: 服务间通…
写在前面 很多小伙伴都反馈说,现在的工作不好找呀,也不敢跳槽,在原来的岗位上也是战战兢兢!其实,究其根本原因,还是自己技术不过关,如果你技术真的很硬核,怕啥?想去哪去哪呗!这不,我的一个读者去面试了蚂蚁金服,HR小姐姐让他下周入职! 注:二狗子,我的一名忠实读者,很勤奋,我的每一篇文章他都是必读的,后来由于经常交流技术,成为了比较熟悉的网友,二狗子也是我给他起的外号,哈哈.这次他拿下了蚂蚁金服,跟我说:面试中大部分的问题我公众号中的文章都有涉及到.哈哈哈,很开心的有木有?! 关注 冰河技术 微信…
阅读本文大概需要 5.6 分钟. 作者:翟洪毅 一.梦想和被拒 二.积累 三.结语   首先介绍一下投稿作者 翟洪毅,16年华理计算机本科毕业.在年前拿到了蚂蚁金服Java开发的offer,P6. 工作经历: 15-17年,壹钱包实习.工作,基础中间件组. 17年8月-19年3月网联清算有限公司,基础组件组. 一.梦想和被拒 进入阿里一直都是我的梦想,我想这跟很多同学是相似的.我前后被拒了两次,分别是大三找实习和工作一年后.第二次尝试一面都没过,但那一次电话面试经历了一个半小时,被问了十几个问题…
导读:GIAC大会期间,蚂蚁金服杨冰,黄挺等讲师面向华南技术社区做了<数字金融时代的云原生架构转型路径>和<从传统服务化走向Service Mesh>等演讲,就此机会,高可用架构社区编辑魏佳和王渊命对蚂蚁金服技术团队的杨冰和黄挺进行的访谈.访谈内容涉及到中间件,微服务,Service Mesh,OpenSource等多个方面,让我们大家一起看看蚂蚁金服技术专家对这些话题的独特见解. 魏佳:欢迎两位,我是高可用架构的编辑魏佳,这位是王渊命.今天很有幸邀请到两位在演讲之后接受我们的采访…
小蚂蚁说: 2019年1月4日,蚂蚁金服ATEC城市峰会将以“数字金融新原力(The New Force of Digital Finance)”为主题,在中国上海举办.蚂蚁金服ATEC(Ant Technology Exploration Conference)科技大会是由蚂蚁金服举办的.面向全球合作伙伴与技术专业人群的前沿技术探索大会,致力于通过对先进的前沿技术探索与讨论,为世界带来平等的机会.过去一年,蚂蚁金服ATEC科技大会走过杭州.硅谷.新加坡.伦敦等全球金融科技中心城市与地区,与当地…