- 博客(44)
- 收藏
- 关注
原创 去哪儿网库存搜索在高并发场景下的探索
作者介绍一、背景1.1系统功能Qunar 机票作为 Qunar 的核心业务之一,每天都有成千上万用户在 Qunar 的平台上完成搜索预定生单等操作, Qunar 也一如既往地为用户提供优质的出行体验和保证。就像每架飞机的座位数都是有固定数量的,在机票业务中,有一类特殊的产品是通过库存进行管理的,这里的一个库存就对应飞机上的一个座位,其业务模型大致如下:上图中,左侧部分是后台供应商能在系统中做的操作:库存录入 通过系统提供的操作页面完成库存的初始化录入,包括库存的个数,所属的航班等等价格调整.
2021-08-31 12:23:13 347
原创 Spark必读!总有一些Spark知识点你需要知道
作者介绍周明,去哪网算法开发工程师。2018年加入去哪儿网,主要从事推荐算法相关工作。这篇文章可以带给你什么不太了解 Spark :可以快速对 Spark 有个简单且清晰的认知,同时知道Spark可以用来做什么,对于经常处理大数据的同学可以思考如何运用到自己的工作中;刚开始写 Spark :一起来回顾 Spark 基础概念和原理,避免新手那些常见的坑,培养性能优化意识,知道如何做性能调优;Spark 老司机 :一起来回顾 Spark 的三三两两,知识点查缺补漏。一、S
2021-08-27 11:40:34 418
原创 全方位解读 MySQL 日志实现内幕(五)
`王竹峰去哪儿网数据库专家,擅长数据库开发、数据库管理及维护,一直致力于 MySQL 数据库源码的研究与探索,对数据库原理及实现具有深刻的理解。曾就职于达梦数据库,多年从事数据库内核开发的工作,后转战人人网,任职高级数据库工程师,目前在去哪儿网负责 MySQL 源码研究与运维、数据库管理和自动化运维平台设计开发及实践工作,是 Inception 开源项目及《MySQL 运维内参》的作者,也是 Oracle MySQL ACE。本文作者将出版于《MySQL 运维内参》中部分内容进行分享,通过多篇.
2021-08-26 18:15:39 230
原创 全方位解读 MySQL 日志实现内幕(四)
`王竹峰去哪儿网数据库专家,擅长数据库开发、数据库管理及维护,一直致力于 MySQL 数据库源码的研究与探索,对数据库原理及实现具有深刻的理解。曾就职于达梦数据库,多年从事数据库内核开发的工作,后转战人人网,任职高级数据库工程师,目前在去哪儿网负责 MySQL 源码研究与运维、数据库管理和自动化运维平台设计开发及实践工作,是 Inception 开源项目及《MySQL 运维内参》的作者,也是 Oracle MySQL ACE。本文作者将出版于《MySQL 运维内参》中部分内容进行分享,通过多篇.
2021-08-26 17:14:25 248
原创 全方位解读 MySQL 日志实现内幕(三)
王竹峰去哪儿网数据库专家,擅长数据库开发、数据库管理及维护,一直致力于 MySQL 数据库源码的研究与探索,对数据库原理及实现具有深刻的理解。曾就职于达梦数据库,多年从事数据库内核开发的工作,后转战人人网,任职高级数据库工程师,目前在去哪儿网负责 MySQL 源码研究与运维、数据库管理和自动化运维平台设计开发及实践工作,是 Inception 开源项目及《MySQL 运维内参》的作者,也是 Oracle MySQL ACE。本文作者将出版于《MySQL 运维内参》中部分内容进行分享,通过多篇文..
2021-08-26 16:26:43 434
原创 全方位解读 MySQL 日志实现内幕(二)
`王竹峰去哪儿网数据库专家,擅长数据库开发、数据库管理及维护,一直致力于 MySQL 数据库源码的研究与探索,对数据库原理及实现具有深刻的理解。曾就职于达梦数据库,多年从事数据库内核开发的工作,后转战人人网,任职高级数据库工程师,目前在去哪儿网负责 MySQL 源码研究与运维、数据库管理和自动化运维平台设计开发及实践工作,是 Inception 开源项目及《MySQL 运维内参》的作者,也是 Oracle MySQL ACE。本文作者将出版于《MySQL 运维内参》中部分内容进行分享,通过多篇.
2021-08-25 11:14:36 252
原创 全方位解读 MySQL 日志实现内幕(一)
`王竹峰去哪儿网数据库专家,擅长数据库开发、数据库管理及维护,一直致力于 MySQL 数据库源码的研究与探索,对数据库原理及实现具有深刻的理解。曾就职于达梦数据库,多年从事数据库内核开发的工作,后转战人人网,任职高级数据库工程师,目前在去哪儿网负责 MySQL 源码研究与运维、数据库管理和自动化运维平台设计开发及实践工作,是 Inception 开源项目及《MySQL 运维内参》的作者,也是 Oracle MySQL ACE。本文作者将出版于《MySQL 运维内参》中部分内容进行分享,通过多篇.
2021-08-25 10:51:57 217
原创 国内酒店稳定性治理实践之缓存治理
`郑吉敏2019 年 8 月加入国内酒店报价中心团队,主要负责报价相关系统开发及架构优化。对高并发高可用有浓厚兴趣,有日订单千万分布式系统高可用建设经验。喜欢钻研算法,acmicpc 程序设计大赛两次进入亚洲区预选赛。曾在 Qunar 首届 Hackathon 大赛中获得一等奖。背景2019 年 9 月,我们连续遇到几次与缓存相关的故障:1、DBA 运维失误,导致我们存储在 redis 里的核心基础数据被清空。由于无法正常提供报价,出现 ATP(订单量骤降)故障,之后通过定时任务花费半个小.
2021-08-24 10:49:05 231
原创 国内酒店稳定性治理实践之内部资源治理
郑吉敏2019 年 8 月加入国内酒店报价中心团队,主要负责报价相关系统开发及架构优化。对高并发高可用有浓厚兴趣,有日订单千万分布式系统高可用建设经验。喜欢钻研算法,acmicpc 程序设计大赛两次进入亚洲区预选赛。曾在 Qunar 首届 Hackathon 大赛中获得一等奖。背景之前介绍了国内酒店稳定性治理实践之系统间依赖治理,我们对系统间的依赖进行了专项治理,涉及通用的限流、缓存、Dubbo、Http、DB、MQ 等。但是光治理系统间的依赖是不够的,我们还对系统内部资源进行了分析和治理。..
2021-08-23 17:41:11 281
原创 对内 DDD 对外 API 之—对外 API 的设计理念
李征(去哪儿网工程师)2017年2月加入去哪儿网。目前专注于领域服务治理、基于API治理的领域能力标准化。致力于通过领域化、模型化、可感知来解决业务复杂度。期望用DDD驱动,降低系统复杂度,提升团队效能。前言对内 DDD,对外 API 是去哪儿网机票目的地事业群业务研发团队2020年 Q3 重点推出的业务重塑架构设计理念。在2020年 Q3,去哪儿网在过往的基础上,在 API 标准化这个领域做出了一些进步,这篇文章主要就是把这方面的经验和大家分享一下。什么是对内 DDD,对外 API 呢,..
2021-08-23 11:04:09 472
原创 Qunar 酒店 NodeJS 覆盖率收集实践
马涛2013 年加入去哪儿网技术团队,目前在目的地事业部,负责 H5、小程序类应用开发。个人对移动端技术领域和前后端工程化有浓厚兴趣,勇于探索实践追求极致。概述一般来讲我们是通过写单元测试来验证程序在执行过程中的代码覆盖。覆盖率结果可以从代码行、逻辑判断及函数方法等维度进行分析。得到的数值可以用来检验我们对系统功能的实现程度,也可以反馈出程序设计的完整性。然而对于一个没有维护单元测试的旧系统,想通过收集覆盖率来检验系统功能和熟悉系统结构不是一件容易的事情。为此我们进行了诸多思考与尝试最终...
2021-08-20 15:10:21 287
原创 用 typescript 写一个工具函数库
翟旭光2019 年 11 月加入 Qunar 机票前端团队,目前在国内基础平台。喜欢工程化和 typescript,喜欢各种提升开发效率的工具,对这方面有浓厚的兴趣,有很多想法待实现。喜欢阅读源码,热衷于探索源码的乐趣,就像在深海探险,会因为偶然发现的一个冷僻的知识点或技巧而兴奋。技术点介绍工具函数的复杂类型的声明(难点)用 ts-mocha + chai 做单元测试用 ts + rollup 打不同模块规范的包前言先看一段代码const {name = 'xxx..
2021-08-18 15:58:03 410
原创 Qunar 是如何解决 IDC 网络故障自愈问题的
苗宏涛2010年加入Qunar,目前负责技术保障部运维管理工作,先后带领团队完成DNS系统,负载均衡系统和运维自动化体系,分布式存储系统的规划和建设工作。1、背景介绍我在2010年加入 Qunar 的时候,Qunar 的 IDC 规模还比较小,服务器也只有几百台。随着公司的发展,业务对服务器的需求也越来越大,随之 Qunar 的 IDC 规模也逐渐壮大起来。如果将所有服务器放到一个 IDC 中,虽然管理会简单一些,但是带来的风险也是不可避免的。单个机房出现故障的风险还是存在的,比如电力、网络..
2021-08-17 15:06:07 410
原创 数据同步系统重构实践
王鹏2017 年至今加入去哪儿机票事业部服务平台,主要负责机票后服务相关业务,以及服务平台数据同步服务和基础索引服务的重构升级。1. 背景在互联网时代,每天都会产生海量的数据,去哪儿网成立至今,积累了海量的用户出行数据,每一次旅行机票记录,酒店记录,门票记录等等,这些数据都存储到数据库中,现在流行的 Mysql 数据库,一般情况下单表容量在 1kw 以下是最佳状态,如果将所有的历史记录都存储到 DB 中,那么每张表的大小将超过 10 亿级,根据不同维度的查询将是一个梦魇,比如通过订单号查询,..
2021-08-16 15:41:16 390
原创 去哪儿网数据同步平台技术演进与实践
作者介绍井显生,2019年加入去哪儿,现负责国内机票出票、退款、改签核心业务。在领域驱动设计(DDD)、高并发有大量实践经验。1、前言去哪儿网国内机票售后是为用户提供退票、改签、航班变动、行程服务、疫情政策等服务的业务。业务场景中有复杂的基于订单、客票、 PNR 、行程、航司等各种维度的查询诉求,这些数据分散存储在不同的 mysql 数据库表中,难以为复杂业务查询场景提供服务。为解决复杂查询场景,我们设计了一套将数据从一个数据源聚合导入到另一个数据源,提供同构或者异构、低延时的、最终一致性的数据
2021-08-16 14:44:50 379
原创 Android 自动化交互实践
李涛2015年3月加入去哪儿网,客户端开发工程师,曾经担任酒店业务和自助入离机项目开发。现负责国际酒店抓取系统开发与维护。Android 自动化交互可以代替人工完成重复性的工作,包括通过自动操作 App 进行黑盒测试和第三方 App 的自动运行。常见的自动化交互包含启动 App、view 的点击、拖拽和文本输入等。随着 App 安防能力的提升,要想实现完整流程的自动化交互变的越来越困难,本文主要探讨目前常见的自动化交互方案以及不同方案的优劣和应用场景。1. 传统执行脚本方案ADB 是 G..
2021-08-12 16:08:19 308
原创 Asop 之 消息处理机制
葛泽续2012年2月加入去哪儿网,多次参与 Android 客户端的重构,插件化开发,客户端安全攻防,现负责国际酒店抓取系统架构升级维护。Android 应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队例,应用程序的主线程不断地从这个消息队例中获取消息(Looper),然后对这些消息进行处理(Handler),这样就实现了通过消息来驱动应用程序的执行。先了解一下涉及到的几个概念:Message消息(Message)代表一个行为(what)或者一串动作(Runnable),..
2021-08-11 15:22:33 395
原创 TARS 系统 —— UI 自动化解决方案
邹德文去哪儿网移动应用开发总监,负责机票售前与客户端的管理工作。2012年加入去哪儿,先后任职于攻略和机票事业部,擅长客户端和跨端技术栈RN,Flutter,对设备指纹有深入研究,主导了机票国内主流程RN迁移,TARS自动化测试系统的开发和推广。 崔宇2018年加入去哪儿网,主要负责机票主流程、机票 iOS客户端、TARS UI自动化系统、iOS端指纹加固等方面的工作。1. 立项背景业务痛点互联网 APP 测试在“快速迭代”的开发模式中进行的,每次迭代都会伴随着各种各样的测试,...
2021-08-10 14:44:33 698
原创 xposed 入门之修改手机 IMEI
吕元江2019年1月加入去哪儿网,现负责app的分析和设备指纹反爬事项,对app脱壳,java/nativec层加解密算法分析还原有丰富经验。1. 背景xposed 对于很多安卓安全和逆向人员来说并不陌生,在对 app 的函数功能分析和拦截时经常会用到。本文以 xposed 修改某个应用的 IMEI 为例,作为一个简单入门介绍。供新手了解如何使用 xposed 编写自己所需的 hook 模块,以及简单介绍 xposed 在其他方面的应用场景。2. 环境要求手机系统:4.4.4-8.0手机..
2021-08-09 14:10:47 2602
原创 IM之Qunar实现
刘帆2015年5月加入去哪儿网IM团队,主要负责办公IM和客服IM的系统开发和架构设计。擅长使用Erlang语言开发高并发、高可用的应用服务。致力于可扩展的IM系统,模块化组件,使用一套服务实现办公、客服、消息推送等多种功能。Qunar由于业务上对 IM 系统的需求,以及对 IM 需要支持的功能和扩展,结合市面上已有的 IM 的实现,实现了自己的一套完善的办公 IM 和客服 IM 系统。具备了以下几个重要特点:实时性,可靠性,一致性,安全性,扩展性,高并发。1. IM 是什么IM(Ins...
2021-08-05 15:11:43 333
原创 防火墙 Keepalived 异常双活恢复后部分外网访问中断问题分析
冯亚伟(去哪儿网 NETOPS)2014年7月加入去哪儿网,拥有丰富的网络运维经验,现负责公司IDC和骨干传输网络的运维工作。1. 故障描述1、19:01 在 fw4 仍然为 master 的状态下 fw3 独自提升为 master 状态;2、19:27 fw3 独自放弃 master 状态,故障开始;3、19:44 发现机器 server1 请求外部接口异常;4、19:48 清理机器 server1 上的 arp 缓存,机器恢复;5、19:51 在 fw4 上发送 vip 的免费 a...
2021-08-04 16:14:52 765
原创 PostgreSQL 中如何控制行级安全和列级安全
彭占元2018年8月加入去哪儿网,现负责公司 PostgreSQL/GreenPlum 运维工作,对数据库日常运维和日常调优有大量优化实践经验。1. 需求提出最近有业务线的同学向 DBA 提出这样的需求:“我的表里有很多敏感数据,怎么给使用者(从 DBA 角度来看就是 DB User)指定查看某些特定行或某些列的权限?”这是我们经常用到的业务场景,比如最典型全公司的短信数据和用户管理平台场景,如何限制各部门仅可查看属于本部门的某些非敏感数据?PostgreSQL 为了符合各种场景的安全需...
2021-08-03 10:42:10 535
原创 PostgreSQL如何查找某一事务中的完整SQL
`李振中,2020年8月加入去哪儿网,主要负责公司PostgreSQL和Oracle的运维管理工作。1. 问题的提出DBA 经常需要排查某一个事务中有哪些 SQL 的场景。典型的 case 就是 DB 有一个 lock 报警,从系统表中查看发现是1个 update 等待的 SQL 是1个 select。熟悉 PostgreSQL 的同学都知道:在 PostgreSQL 中,由于特有的 MVCC 机制,读不阻塞写,写不堵塞读。那么为什么会产生这种 lock?实际就是因为这个 select 处于.
2021-08-02 16:59:56 1142
原创 Qunar SwiftUI 的实践、评测与思考
赵龙,2020年加入Qunar,担任大前端iOS开发,OC、 SWIFT、C++、Dart等技能丰富,喜欢优化开发流程,研究增加效率的代码和开发方式。 林书辉,2018年加入Qunar,iOS、RN开发工程师。目前负责大客户端公共产品首页、用户中心等功能的开发和维护。持续关注学习前沿的大前端技术,推崇技术创新带来的效率优化和性能提升。现致力于Native+DSL动态化组件方案的开发与推广。一. 前言SwiftUI 出现已经2年,至今尚未大规模推广落地,它局限在 iOS 生态内,暂时闭...
2021-07-27 15:44:58 353
原创 Qunar容器平台网络之道:Calico
作者:赵宁(去哪儿OPS)2011年加入去哪儿网,从事私有云基础架构及ceph存储运维工作,有丰富的运维经验,现负责容器及存储组的工作一. 简介Calico 是一个开源的 CNI 项目,为容器化应用提供的网络解决方案,下面来为大家简单介绍一下我们是如何使用 Calico 为容器化提供网络功能的。二. Calico架构简单说一下 Calico 架构,Calico 是一个基于三层的数据中心网络方案,可作为 CNI 插件为运行于 Kubernetes 中的容器提供基于 TCP/IP 三层的网络通信方.
2021-07-26 18:04:45 261
原创 Tensorflow for Java + Spark-Scala分布式机器学习计算框架的应用实践
王辉,2017年加入去哪儿网。 目前负责反爬虫相关风控业务,技术领域涉猎广泛,在风控智能化实践方向的道路上持续探索中。一. 前言Qunar 智能风控场景中,风控研发团队经常会应用一些算法模型,来解决复杂场景问题。典型的如神经网络模型,决策树模型等等。而要完成模型从训练到部署预测的全过程,除了模型算法之外,离不开技术框架的支撑。本篇文章将和大家分享一下,在预测服务部署阶段,基于 Tensorflow for Java 和 Spark-Scala 构建分布式机器学习计算框架的实践经验。主要围绕以下几...
2021-07-26 16:39:01 738 1
原创 Jar 组件自动化风险监测和升级实践
曾兆祜2018年5月加入去哪儿网,现负责基础安全攻防平台的开发建设以及日常的安全运营工作背景以 Xstream、Jackson、Fasjson 等为代表的 Jar 组件高危漏洞层出不穷,安全组每年 N 次推动业务线进行第三方 Jar 组件升级,每次升级动辄涉及成百上千个应用服务,给双方都带来了沉重的负担。为了降低安全组在 Jar 组件升级期间的工作量,同时尽量给业务线减负,Qunar 安全组在 Jar 组件自动化风险监测和升级上进行了大量实践,并总结形成了一套相对完善的解决方案。本主主要聊一下 .
2021-07-23 12:04:56 217
原创 国内报价-APP时间加速
崔迅2016年加入去哪儿网,负责国内机票报价搜索系统的维护工作,有丰富的搜索系统性能优化经验。现主要负责业务风控业务。背景2018-2019 年是机票业务飞速发展的一年,在新增辅营、学生票等新尝试后,业务量屡创新高。随之而来的是请求量的增高及计算复杂度的攀升。从而导致整体报价的响应时间严重恶化。仅上半年,搜索时长便从200ms上涨至350ms左右。监控表现如下:本文主要描述围绕响应时间超长问题做的几项尝试。基础概念及分析结构国内报价的系统结构,如图所示:总体可以分为三层主系统.
2021-07-13 18:02:57 221
原创 Cisco VPC peer-gateway 对直连 BFD 邻居建立的影响
作者简介:冯亚伟,去哪儿网 NETOPS,2014 年 7 月加入去哪儿网,拥有丰富的网络运维经验,现负责公司 IDC和骨干传输网络的运维工作。一、场景介绍如下图所示:两台思科 nexus 交 换机通过 VPC 为服务器提供双上联接入;服务器通过 bond0(主备模式)双上联到两台交换机上面。连接 SW1 的网卡为主用网卡,连接 SW2 的网卡为备用网卡;服务器作为 k8s 节点需要与两台接入交换机建立 iBGP ,为了缩短 BGP 的收敛时间用单跳 BFD 进行链路故障检测。两台接入交换机使用 i.
2021-07-02 16:36:50 954
原创 Qunar DNS 体系建设
作者简介:苗宏涛,2010 年加入去哪儿,主要负责去哪儿网站运营-技术保障部相关工作。将运维自动化,智能化一直是我秉持的理念。DNS定义DNS 是域名系统 ( Domain Name System ) 的缩写,是因特网的一项核心服务,它作为可以将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的 IP 数字串。互联网能够互联互通,能够方便人们方便访问,DNS 起到了很大的作用。DNS 查询过程要维护好 DNS 系统,首先要理解 DNS 的原理.
2021-07-02 15:25:50 189
原创 深入理解 epoll
1 简介Epoll 是个很老的知识点,是后端工程师的经典必修课。这种知识具备的特点就是研究的人多,所以研究的趋势就会越来越深。当然分享的人也多,由于分享者水平参差不齐,也产生的大量错误理解。今天我再次分享 epoll,肯定不会列个表格,对比一下差异,那就太无聊了。我将从线程阻塞的原理,中断优化,网卡处理数据过程出发,深入的介绍 epoll 背后的原理,最后还会 diss 一些流行的观点。相信无论你是否已经熟悉 epoll,本文都会对你有价值。2 引言正文开始前,先问大家几个问题。1、epoll 性
2021-03-17 11:21:34 606
原创 俗说 GC 之 Heap 区内存模型的演进
1 篇首最近看到 GC 这个异常古老的话题又被抛了出来,OpenJDK11 中出现了大道至简、返璞归真的 Epsilon GC 垃圾回收器,ZGC,Shenandoah GC 作为在 G1 的基础之上的两个分别合入了 OpenJDK11 和 OpenJDK12 的项目,两个项目的代号分别为分别为 JEP333、JEP189,这两款目前正在发展中的垃圾回收器成为了与 CMS、G1 两款早期并发回收器进行性能对比的主角。然后我就突然找到了一个主题,那就是比较两款垃圾回收器的性能就是在比较什么?要比较的究竟是哪
2021-02-05 10:33:31 418
原创 Lucene 中的 Stored Fields 存储优化
前言Qunar 酒店的搜索和 suggest 是基于 Lucene 构建的,在我们的使用场景中,由于召回和排序是作为两个单独的应用,当召回的文档数量比较多的时候,响应速度较慢,Young GC 也比较严重,导致并发量很难上去。经过分析我们发现,主要的问题是因为需要获取大量文档的存储字段,造成反序列化比较多,所以影响速度,GC 也比较多。Lucene 正常的使用场景是不期望返回这么多文档的,一般是排序完成后只返回其中一页的结果,所以问题不明显,尽管也可以通过一些方法(比如粗排序)减少返回文档的数量,但问题
2021-02-05 10:06:28 670
原创 Lucene 倒排索引原理
1 前言Lucene 作为 Apache 开源的一款搜索工具,一直以来是实现搜索功能的神兵利器,现今火热的 Solr 和 Elasticsearch 均基于该工具包进行开发,我们搜索召回组这边也是基于 Lucene 实现了一套索引构建机制,用于酒店搜索、门票搜索、大搜等搜索相关业务。而 Lucene 之所以能在搜索中发挥至关重要的作用正是因为倒排索引。因此,本文将介绍一下倒排索引的概念以及倒排索引在 Lucene 中的实现。2 基本原理2.1 什么是倒排索引搜索的核心需求是全文检索,全文检索简单
2021-02-04 11:25:58 1225 2
原创 React Native 优先的多端统一化方案
1 方案背景长期以来 APP、H5、小程序等各个端的定位和发展历程都不一样,各端技术栈差异性也较大,基于成本和效率考虑并不追求各端一致性,结果就是各端真的就渐行渐远了。移动端增量红利越来越少的情况下,产品这边逐渐追求各端的产品体验一致性,多端同时上的需求越来越多,但是由于技术上割裂较大,工时基本都会按端加倍,开发成本奇高,迫切的需要一套减少多端开发成本的方案。2 方案调研开始之前我们对业界现有的一些跨端方案进行了简单的调研和了解。通过对比目前的多端开发主要有以下几个大方向:对 IOS 和 A
2021-02-03 18:12:54 683
原创 浅析 Redis 分布式锁解决方案
1 背景我们日常在电商网站购物时经常会遇到一些高并发的场景,例如电商 App 上经常出现的秒杀活动、限量优惠券抢购,还有我们去哪儿网的火车票抢票系统等,这些场景有一个共同特点就是访问量激增,虽然在系统设计时会通过限流、异步、排队等方式优化,但整体的并发还是平时的数倍以上,为了避免并发问题,防止库存超卖,给用户提供一个良好的购物体验,这些系统中都会用到锁的机制。对于单进程的并发场景,可以使用编程语言及相应的类库提供的锁,如 Java 中的 synchronized 语法以及 ReentrantLock 类
2021-02-03 15:19:56 341
原创 GraphQL 在酒店系统上的实践
1 问题由来关于我们 Node 服务产生了什么问题,为什么会出现这些问题,以及为何需要采用 GraphQL 去解决这些问题,是一个值得探究的过程。下面,我将从服务架构入手,简单介绍一下项目背景,而后通过几个案例,让大家更形象的理解我们现在的问题是如何产生的。1.1 服务架构简介左边方框内属于我们前端团队的服务,右边属于后端服务。这里只是比较粗糙的架构,省略了一些负载均衡等细节,对于我司国内酒店服务来说,这里的图示就足以解释说明我们的问题。而我们 Node 组,是处于承接上下游的一个位置,是属于直接
2021-02-03 14:19:23 325
原创 业务网关的落地实践
前言随着系统规模变大、复杂度越来越高,微服务架构渐渐成为主流。当一个单体应用被拆分成许许多多的微服务应用后,也带来了一些问题。一些与业务非强相关的功能,比如权限控制、日志输出、数据加密、熔断限流等,每个微服务应用都需要,因此存在着大量重复的代码实现。而且由于系统的迭代、人员的更替,各个微服务中这些功能的实现细节出现了较大的差异,导致维护成本变高。另一方面,原先单体应用下非常容易做的接口管理,在服务拆分后没有了一个集中管理的地方,无法统计已存在哪些接口、接口定义是什么、运行状态如何。网关就是为了解决上述问
2021-02-03 11:46:52 425
原创 记一次 PXC 集群拆分引发的思考
1 内容摘要众所周知,MySQL 基于 GTID 复制功能的出现,极大地简化了 MySQL 复制拓扑初始化配置和变更以及高可用的切换。在去哪儿网,我们大量使用 PXC(Percona XtraDB Cluster)集群,然而 PXC 中用于记录事务的 Galera GTID 与普通的 MySQL GTID 还是有一点差异,运维过程中如果不加注意,可能会引发一些问题。本文通过记录一次 PXC 集群拆分的过程中由于未深刻理解这两者的差别而导致的问题与原因分析,总结了 Galera GTID 与 MySQL G
2021-02-03 11:32:29 217
原创 Qunar 数据库迁移方案的思考与总结
1 概述数据库迁移拆分是我们日常运维工作中不可避免的一环,本文主要分析数据库常用的迁移方案对应的使用场景以及优劣势,同时分享了 Quanr 数据库使用架构,以及架构演进过程中的实践经验。2 迁移方案通常,一个数据迁移方案的设计,取决于原本的数据架构和业务场景。最终目标都是尽可能的对业务友好,停服时间越短越好,甚至是不停服,同时还需要保证数据的一致性。2.1 方案一常见的在线数据迁移方式都是先建立主从,同步数据;等待业务低峰期进行割接,主要过程如下:新老集群进行主从复制同步数据低峰期停
2021-01-29 14:25:55 173
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人