- 博客(226)
- 资源 (58)
- 收藏
- 关注
原创 Http中Retry-After的使用方式
前言Http是一种协议,对于header、请求方法、内容传送方式等给出了相关定义和推荐用法,但并不会要求你强制遵循的。我们只所以要把一些细节掌握好是因为“专业性”,要把约定俗成的一些细节用好。需求场景流量入口到统一接入API网关层,当突发洪峰时虽然后端服务具有弹性能力,但毕竟资源的启动和应用预热都需要时间,所以服务能力的扩容具有延后性。用户越是接收不到预期的返回越是会疯狂重试,最终导致洪峰放大N倍后后端雪崩。如果我们想彻底解决这个问题,需要做两手准备。第一,做好后端的限流保护,当服务能力超过预期
2020-09-18 21:00:29 2438
原创 悯农--写给程序员的诗
悯农:春露秋寒闹九州,万兽拼斗弄潮流。商女不识鱼子贵,一入青楼莫白头。标题:农-码农,程序员。第一句:春露秋寒-指时间上的跨度,这里有三层意境。第一层是一年四季忙个不停,第二层是一个行业从兴起到衰败,第三层露水代表早上寒气代表晚上,暗指通宵达旦。闹-动词,代表不同的心态和动力,有些是随波逐流,有些是得过且过,有些是拼命努力,有些是不甘平庸,人生百态用一个闹子来表达比较贴切。九州-指空间上的跨度,北上广深杭祖国各地,代表大部分程序员背井离乡漂在各地。该句从空间、时间两个维度来描述了
2020-08-18 10:10:24 2378 5
原创 LinkedHashMap引发的内存泄漏以及解决过程
今天在使用LinkedHashMap的时候踩了一个坑,用了差不多一整天的事件才定位并解决掉,这里记录并于大家分享下经验。放着这么多Map不用非要去碰比较冷门的LinkedHashMap干啥?这跟我的使用场景有关系。先介绍下我选择它的原因。应用场景:我们开发了一套网关,一期已经上线,可以进行正常的路由转发、限流保护、动态配置、灰度发布等基础功能了,二期我想给它加入缓存容灾的功能,简单说就是存储200状态的南向报文当它们服务异常时我利用这些缓存来为客户端提供响应。当然细节上并没有这么简单暴力,会对南向h
2020-08-17 19:20:03 3861 1
原创 粉丝福利-2019云栖大会学习资料
最近在充电翻学习资料时又review了一遍2019年云栖大会相关材料,在这里共享给大家,希望对学友们有所帮助。只对粉丝开放且不需要积分,算是对于粉丝们长期关注的谢礼吧。从整个资料体系中不难看出云计算和人工智能领域仍然是未来很长一段时间的发展趋势,个人感觉在这两个领域中容器化和视觉神经将会迎来一波爆发。PS:有个别文章我设置的是零分,但是因为平台原因仍设置了分数,我改了好几次都没改过来,如果遇到了大家可以私信我。以下是我的资源列表:卓诗尼破局”数智“转型https://download.csdn.
2020-07-22 18:39:53 396
原创 优秀网关应该具备的功能
基础功能:1 路由转发 路由转发是网关最最基础的功能,没有之一,一个不具备转发功能的网关不具备任何使用价值。转发功能的优劣取决于转发策略的丰富度,常用的转发策略有基于host转发、path转发、加权轮询、根据自己业务场景在request中根据header内容进行转发等等。在实现这些逻辑时我们要注意一些网关层的“潜规则”,例如最长匹配规则(当host或path同时满足多个匹配规则时要把请求路由到匹配度最精确的目的地)、IpSource规则(尽量将同一客户端ip请求路由到同一个目的地)。2 过滤增.
2020-06-28 18:43:04 983
原创 敏感信息监控通用方案
背景: 春节过后公司有个核心部门遭到竞争对手的强力挖角,所谓铁打的营盘流水的兵,人员的流失并不可怕,公司担心的是wiki这类的文档中心里的设计、方案、策划等核心资料外泄。所以必须要加强文档库敏感操作的监控,及时止损。分析: 如果文档库是开源或者自研产品,可以通过修改代码满足上述需求,如果像我们一样使用confluence这样的黑盒产品就比较头疼了。Confluence对内容的导出分为两个维度:项目维度和页面维度。其中项目维度的导出Confluence内置了审计日志,而且我们已经通过权限控...
2020-06-01 09:18:24 1064
原创 容器知识了解平行宇宙
平行宇宙,这个科幻片电影中最常引用的概念;容器,这个云原生时代最常提到的技术。这俩本是八竿子打不到一起的东西,今天,我就尝试用容器知识体系来帮助大家理解下平行世界。 正常人理解到三维没有任何困难,就是我们看到的xyz立体空间,但是我们其实活在一个四维空间中,时间就是另一个维度。虽然你周一和周二的早上9:00都坐在同一张办公桌上办公,但是因为时间维度的不同,在四维空间中它已经不再是同一个东西了。没听明白没关系,借助容器来讲解下,假如我们生活的世界运行在一个容器中,而且这个容器不停的以最小时间...
2020-05-21 16:02:55 483
原创 是否把鸡蛋放在一个篮子里——多云or单云的思考
目录前言:主题:多云不是银弹优劣分析:高可用方面:成本方面:易用性方面:功能方面:企业战略方面:总结:前言: 本人一直专注于多云架构的研究,经常与云原厂人员进行沟通,对单云和多云有一些感触,在这里与大家分享下。主题:多云不是银弹 多云在很多方面有单云不具备的优点,所以大约1年前我还一直以为自己坚持的多云持续交付才是最先进最正确的,但是随着云厂商功能的迭代和公司云架构的不断演化,渐渐发现了多云平台的不足。现在不得不重新审视多云与单云孰优孰劣。优...
2020-05-09 18:17:16 514
原创 Zuul2代码详解
说明:1 前面加星号,需要重点掌握2 zuul2命名规则: 带sync的就是同步,同样的名称不带sync的就是异步 BaseServerStartup只为我们提供了基础的server,这是个抽象类,需要使用者自己来实现。 同理2种InboundFilter、2种OutboundFilter、1种Endpoint也都是抽象类,需要使用者自己来实现。io.netty | b...
2020-04-26 18:25:43 1841
原创 Zuul2核心架构
Zuul2的核心架构就是就是两大体系,netty体系和filter体系。1 Netty体系Zuul2底层采用Netty的事件响应模式,要掌握zuul2就必须先要掌握Netty。1.1 Channel、Event、EventLoop、EventLoopGroup、ChannelHandlerChannel:每一次通信就会启动一个channel,一个channel对应一个socket...
2020-04-22 18:19:22 1293 1
原创 Lucene结构分析
索引(Index):一个索引实例就是一个文件夹,该文件夹中所有文件都属于同一个索引。段(Segment):一个索引包含1~N个段,段与段之间是独立的,添加新文档可以生成新的段,不同的段可以合并。 具有相同前缀文件的属同一个段,图中共两个段 "_0" 和 "_1"。 segments.gen 和 segments_5 是段的元数据文件,也即它们保存了段的属性信息。文档(Document):文档是我们建索引的基本单位,不同的文档是保存在不同的段中的,一个段可以包含多篇文档。 域(Field
2020-04-03 16:35:43 713
原创 Spring Cloud Gateway VS Netflix Zuul2
最近公司要引入统一网关,自己也参与调研了几种,当在研究Netflix的Zuul2和SpringCloudGateway时被网络上杂七杂八的材料跟震惊了,不客气地说很多国内博客都是在误人子弟,充斥着那些基于SpringCloud全家桶号称自己使用的是zuul2的“专家”。所以下定决心用一个系列好好介绍下第二代NIO的两个网关:SpringCloudGateway和NetflixZuul2。背景介...
2020-04-03 16:30:44 4312 5
原创 Spinnaker第十节—如何开发一个新环节
前面几篇比较枯燥的介绍了orca、clouddriver、deck目录结构和核心代码,本篇将会作为这一系列的终篇为大家分享下如何在spinnaker中开发一个自定义的环节。需求背景:Spinnaker对于镜像自带了FindImageByTags环节,可以让我们在pipeline中通过tag为条件选中想要发布的镜像,流转到后续的deploy环节。但是腾讯云镜像不支持tag功能,所以为了达到同...
2020-03-13 14:59:57 566
原创 Spinnaker第九节—CloudDriver代码详解
CloudDriver遵循NetflixSpinnaker家族标准的代码目录结构:Clouddriver-web是主入口和公共controller,clouddriver-core是抽象和默认实现,clouddriver-XXX是云厂商自定义实现。clouddriver-web:关于这个入口子项目,我们只需要搞清楚一点,clouddriver是如何将各家云厂商的子项目进行拆分管理...
2020-03-13 14:49:20 2365 8
原创 Spinnaker第八节—Deck代码详解
前沿 说实话作为一个后端语言的工程师来说,Spinnaker的Deck代码是我研究起来最费劲的,因为Spinnaker的UI设计并没有采用antd之类的前端脚手架,而是纯靠angular+typescript+html一点点写出来的,不仅需要有这些js语言的基础,还要找到项目内代码之间的引用关系,对于js项目来说引用关系确实需要花时间一点点的去review代码。不过经过努力最终还是啃下了,越...
2020-02-23 21:19:37 988
原创 Spinnaker第七节—Orca代码详解
这个春节假期由于新冠弄得一直在家憋着,闲得无事把spinnaker代码翻出来把每个微服务重新review一遍,做了一些笔记,今天拿来分享一下,后续如果有spinnaker开发或者bug修复可以直接有的放矢。计划先把核心的几个微服务分几期慢慢介绍下:orca、clouddriver、deck,今天先介绍orca。Orca名词解释 Orchestration 与pipe...
2020-02-10 12:16:55 2435
原创 Jira的终极应用--Http升级为Https
需求背景:由于对网络安全的监督和管控越来越严格,chrome等浏览器强制要求https看样子也是大势所趋,所以我们遇到了服务http升级为https协议的需求。我们企业对外的服务早已经是https协议了,但是内部一些工具的改造还在起步阶段,本篇的改造策略只是拿jira和confluence来举个实战例子,其思想和步骤可以试用于其他场景。http存在的漏洞和https是如何解决这些安全问题的...
2020-01-21 17:56:10 4621
原创 Spinnaker终极形态-Spinnaker On Spinnaker
实践是推广一个产品或技术的最好的方式,特别在IT行业让产品管理产品本事,就是一种很好的推广方式,例如Docker in Docker、k8s in k8s,这些已经被大家普遍接受。所以我觉得spinnaker要想很好的推广开来,也需要类似的应用方案,我把它称为Spinnaker On Spinnaker。架构图如下:最上面部分是主spinnaker,或者叫master spinn...
2020-01-01 00:01:00 1347
原创 Spinnaker第六节-开发和使用细节
今年在原版spinnaker的基础上我们和云平台厂商合作支持了阿里云和腾讯云,俗话说“是骡子是马拉出来遛遛“,今年的跨年晚会弹性部分将完全交给spinnaker来处理。现在是圣诞夜,我和小伙伴们还在spinnaker平台上加班做容灾和扩容,希望一周后的”多云多活极致弹性“能给2019年画上完美的句号。以下是云平台在实现spinnaker时遇到的一些问题,同时也是自动化持续部署需要注意的共...
2019-12-27 14:40:05 849
原创 Jira的终极应用—版本升级与数据迁移
前言:公司的Jira和Confluence版本太低了,很多敏捷看板相关的功能都不能使用,所以计划直接升级到最新的版本。当前Jira6.4版本需要升级到8.5.1当前Conference5.7.1版本需要升级到7.1.0方案:升级过程需要保证新版本基础体安装、已使用插件安装;保证元数据迁移和本地附件目录迁移。其中本地附件目录迁移不需要考虑跨版本的问题,可以直接复制拷贝;而元数据迁...
2019-12-04 02:36:32 2306
原创 Spinnaker第五节-金丝雀分析
目录核心思想:金丝雀分析的意义:三大分区:载体区:监控区:Spinnaker区:载体区的原理图:监控区的原理图Spinnaker区的原理图:三大区总体图:思考题:Spinnaker的金丝雀分析并不是Spinnaker通过代码独立完成的,它只是提供了一个概念,借助部署策略和监控工具来实现的。核心思想:基于生产环境的镜像和测试版本的镜像各开一...
2019-11-26 18:45:32 2404
原创 云架构师知识图谱
如何成为一个合格的云架构师,至少需要先掌握图谱中出现的所有知识点。后期会专门开几个专题,针对每一支图谱进行系统讲解,讲透他们的原理、使用方式和应用场景。...
2019-11-08 11:54:18 804
原创 复盘AutoX微服务技术选型
前言:去年12月份写过一篇博文《从一个简单需求学习微服务思想》,当时接到了一个需求任务要把企业内部运维栈和工具栈的系统全部管理起来,出于功能和性能扩展维度的考虑,选择用SpringCloud微服务架构来开发,命名为AutoX,到现在已经过去1年了,现在复盘下当时的选择,确实是条正确的道路。原因有以下几点:1 功能扩展在过去一年内又不断接到了罗干新的需求,例如接入Jira的管理、...
2019-10-28 00:29:59 649
原创 Spinnaker产品说明
目录1 产品简介2 架构设计2.1 生命周期2.2 功能架构2.3 发布流程2.4 微服务技术架构3 Spinnaker的优势3.1 支持多云3.2 多种发布策略3.2.1 无策略3.2.2 Highlander3.2.3 Red/Black:3.3 金丝雀分析3.4灵活控制3.5无缝集成现有工具5 操作文档...
2019-10-07 21:31:09 4018
原创 2019云栖大会归来有感
刚从杭州云栖大会回来,今天在CSDN博客中跟小伙伴们分享下大会的内容和我自己的一些见解。今年这是第十界云栖大会了,命名为APSARA,翻译过来是“飞天”,从这个抬头就可以看出阿里的野心,不过他们确实有“一飞冲天”的资本,因为他们在大会上发布了一些列的黑科技,后面会详细介绍。阿里巴巴董事局主席兼首席执行官张勇在25日上午主论坛演讲中提出了“数智驱动”的战略,用阿里云+大数据为...
2019-09-29 23:40:09 2415
原创 大型在线实时应用解决方案
前言:各家互联网公司每年都有印有自己图腾的重大活动,例如天猫的双十一、京东的六幺八、芒果TV的跨年晚会等。这些活动不仅会带来流量的激增,同时活动的成败也几乎决定了产品线研发运维人员的荷包收益。所以每当这种大型在线实时应用活动到来时,公司都会提前一个月组成临时战斗小组全力研究各种解决方案,本文我就基于自己的理解从宏观上进行分析和讲解。1全链路监控解决方案全链路监控是最重要也是时间维度上最...
2019-09-03 19:26:41 367
原创 Spinnaker第四节-对接k8s
前一篇我们介绍了Spinnaker是如何对接和管理实例云的,本篇我们将介绍Spinnaker如何对接k8sSpinnaker在对接实例云时已经为我们做过很好的铺垫,让我们接触到Immutable的发布方式,并体验到随之而来的好处。K8s将Immutable发挥到极致,将版本的创建与销毁由分钟级提高到秒级。Spinnaker管理K8S的前世今生Spinnaker曾经按照管理实例的方...
2019-08-22 15:53:36 3556 2
原创 Spinnaker第三节-对接云实例
目录前言:Infrastructure与实例云对应关系Spinnaker的Bake阶段Spinnaker的金丝雀分析持续集成全流程设计:部署策略云平台差异性注意事项:1 伸缩规则的继承2 线上服务不可中断3 按量计费常见问题:1 实例创建后状态不能up2 spinnaker对接AWS后无法正常启动3 spinnaker对接国内云平台...
2019-08-13 23:45:03 1316
原创 YAPI工具入门手册
YAPI官方提供了详细的手册,但是对于没集成测试基础的人来说并不是很友好,所以自己一边搭建一边摸索出一个对初学者比较友好的使用手册。1 登陆YAPI提供独立用户库、LDAP、oauth2等多种登陆方式,我推荐的方式是LDAP。2 项目创建新建项目前一定要先添加分组,因为这个会涉及到后期的成员权限管理,将项目组的组长设置为自己或者项目负责人。如果使用默认的个人空间,那你的项目永远...
2019-07-25 23:30:01 22939
原创 YAPI生产规格安装文档
目录序言:为什么需要API管理工具1 并行开发2 Demo快速搭建:3 自动化测试4 API文档库1 安装yarn2 安装mongodb3 安装yapi4 数据库配置鉴权认证5 启动yapi服务6 nginx代理6.1安装nginx6.2 创建nginx运行用户6.3修改nginx主配置6.4修改nginx服务配置6.5...
2019-07-15 21:51:21 1074
原创 Spinnaker第二节-微服务设计
本篇详细介绍一个spinnaker项目的微服务设计,这里之所以叫微服务设计,而不是叫微服务架构,是因为spinnaker是由Netflix和Google多个开源产品搭建的微服务节点组合成的一个微服务组群,里面掺杂了Go、Groovy、Node.js各种语言,并没有采用流行的Spring Cloud这样的架构我们理解的传统的微服务架构包括以下部分:我们先不说具体的细节,我们可以看得...
2019-06-25 17:17:20 1423 3
原创 Jira的高级应用—容灾篇
背景:我现在生产使用的Jira是安装在物理机上的,而且是一台将近6年的古董机,Jira承载着我们公司日常的工作流任务交互,所以我必须想办法好好保护它。目前的容灾方案是通过Linux的crontab每天晚上凌晨将DB中的数据和Jira的文件系统做一次异机备份(由于历史原因,我接手的时候就已经这样了,并非我本意),但是这样一旦发生磁盘损坏等问题会让我最多丢失一天的数据,而且需要重新搭建一次ji...
2019-06-20 15:59:05 1589 10
原创 腾讯全球数字生态大会--散记
很荣幸做为战略合作伙伴受邀参加了腾讯在昆明举办的全球数字生态大会,为期三天的大会紧张而充实,关于大会的报道各大媒体都有官方文稿在总结和宣传,这里就以我自己的视角来回顾下大会的几个议题,浅谈自己的想法,就当是自己留一个笔记吧。主题:互联网下半场开战,风来了对于这个主题的理解,按字面意思拆成三部分。第一,互联网的推进和发展还未结束,虽然人口红利已开发殆尽,部分互联网企业相继传出负面的新...
2019-05-26 19:58:35 1975 1
原创 利用supervisor解决kafka自杀问题
1 背景:我有一套ELK在做日志收集,但是经常莫名其妙的出现kafka自己shutdown的问题,没有周期性,有时候几周一次,有时候几个月一次。报错日志如下:[2019-05-17 15:17:16,047] ERROR Failed to clean up log for __consumer_offsets-45 in dir /tmp/kafka-logs due to IOE...
2019-05-20 23:30:59 3812 7
原创 Spinnaker第一节-What、Why、How
前言我们公司一直在寻找一种自动化持续交付方案,自己也走过弯路造过一些玩具轮子,直到有一天我的老板发给我们一个spinnaker的链接,才让我认识了这个国外开源产品,打开了一扇窗,看到了更精彩的世界。不知不觉已经参与spinnaker的研究和实践快一年了,早就有想法在博客中做一个spinnaker的专题来将这个强大的工具与大家分享下,无奈spinnaker有上百万的代码量,涉及到的知识点又比...
2019-04-30 19:38:16 1958 5
原创 架构师的三种境界
架构师,在每个程序心里都是一个神圣的职业,那么什么才是真正意义上的架构师呢?狭义的定义:在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。广义的定义:系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物每个人对架构师的理定位都不同,同一个人在不同阶段对架...
2019-04-23 00:58:19 2084 4
原创 Web服务http日志收集
目录需求场景:架构设计:端口号:准备资源:Linux版本:准备Java环境ElasticSearch:下载安装配置:启动:Zookeeper下载安装:配置:启动:Kafka下载安装:配置:启动命令:准备和调试:Logstash:下载安装:配置:logstash服务配置:被监听的服务配置:启动命令:...
2019-03-09 20:33:53 3388
原创 Jira的高级应用—扫雷篇
本文做为Jira深入学习的最后一篇博文,让我来给大家好好介绍下我在整个Jira使用和开发过程中遇到的那些坑,防止后面的兄弟姐妹不要跟我一样炸死在沙滩上。第一坑:Jira Restful接口版本的问题Jira的Restful接口格式如下:http://ip:port/rest/api/${version}/{模块},例如我要做查询时需要调的接口是http://ip:port/rest/...
2019-02-27 23:46:21 1952
原创 Jira的高级应用--代码篇
Jira的集成有两种方式第一种:直接使用现有的轮子,也就是封装好的Jira API客户端代码第二种:通过Http调用Jira的Restful接口 两者相比第一种功能更丰富一些,但是要掌握Jira的API学习成本比较高,第二种上手更快一些,但是需要自己编程处理各种Response。 我的应用场景和需求:需要在Jira上配置两个webhook:第一个WebHook:当主...
2019-02-17 00:51:46 4529 4
原创 Jira的高级应用--实战篇
Jira是个功能强大扩展性很强的一个工具,但就是因为扩展性太强了,导致Jira在实战使用时不太好理解,所以学习Jira必须要提前把重点概念理解清楚。本篇所有的配置都需要您具备admin的权限,所以请自己搭建一个Jira环境或者找你的管理员给自己账号添加下admin的权限。 一个新项目,主要分为4个部分:1 你的项目中有哪些问题类型2 绘制自己的工作流3 自定义字段和必填信息...
2019-01-21 23:57:19 6363
ChaosBlade项目外部分享.pdf
2020-07-22
深度学习在线下场景的探索与实践-云栖大会.pdf
2020-07-21
集成智能接入网关APP:优化企业级移动办公网络.pdf
2020-07-21
运营商如何实现大型企业大型企业应用上用云.pdf
2020-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人