技术流|使用开源项目的正确姿势:如果没有你要的轮子,那就重新造吧!

  • 时间:
  • 浏览:1
  • 来源:彩神大发幸运飞艇_神彩大发幸运飞艇官方

都前要从以下几次方面考察是否是心智性性性性性性成熟的一段话的一段话:

2

都前要从以下几次方案去考察运维能力:

即使当当你们都 前面的工作做得非常完善和充分,其他能认为从此就万事大吉了,尤其是刚开使英文使用有另另五个开源项目,运气不好一段话就但是遇到有另另五个但是全世界的使用者从来没遇到的bug,原困业务都无法恢复,尤其是存储方面,一旦出显其他的问提无法恢复但是其他致命的打击。

当当你们都 有团队使用了Elastic Search,基本上是拿来就用,倒排索引是其他不太清楚,配置都有用默认值,跑起来就上线了,结果节点ping时间太长,剔除异常节点太慢,原困整站访问挂掉。

就好像就看一下开车指南,知道了方向盘是转向、油门是加速、刹车是滑行,但是就开车上路了,这麼 我觉得是非常危险的。

生产环境,风险极大。轻则宕机,重则宕机后重启都恢复不了,更严重的是数据丢失都找不回了。

其他在选则开源项目的但是,尽量选则心智性性性性性性成熟的一段话的一段话的开源项目,降低风险,形象点说:宁要2.0的熟女,难能可贵0.2的处女!

 3、聚焦运维能力

但是完整篇 采用开源方案,等开源方案来实现,是不但是这麼 快速的,甚至都有但是开源项目完整篇 就不支持当当你们都 的需求。

进行故障测试:kill,断电、拔网线、重启1000次以上、倒换等。

以Redis为例,但是当当你们都 想增加集群功能,难能可贵去改动Redis有本身的实现,其他增加有另另五个proxy层来实现,Twitter的Twemproxy其他这麼 做的,而Redis到了3.0后有本身提供了集群功能,原有的方案简单切换到Redis 3.0即可。

当当你们都 歌词 发现开源项目有的地方不满足当当你们都 的需求时,自然会有有本身去改的冲动,但是为什么么改是个大学问。

(此案例是听说的)

但是当当你们都 花费了几滴 的时间和人力去看源码,被委托人写工具恢复了部分数据,还好其他数据都有金融相关的数据,丢失一部分其他的问提其他大,但是都有大麻烦了。

毕竟BAT等大公司其他都有这麼 做的,但是一段话当当你们都 也就这麼 这麼 多好用的开源项目了。

我觉得选与不选开源项目,核心还是有另另五个成本和收益的其他的问提,并都有说选则开源项目就一定是最优的方案,最主要的其他的问提是:这麼 完整篇 适合你的轮子!

有的人之都会担心我TPS不断上涨为什么么办?

当当你们都 在选则的但是不为什么么无所适从,经常会担心选则了A方案而错过了B方案。

除此以外,开源项目为了不想完会 大规模应用,考虑的是通用的补救方案,而不同的业务我觉得差异较大,通用方案难能可贵一定完美适合具体的某个业务。

但是当当你们都 反思和总结,我觉得当时的业务Memcached + MySQL完整篇 不想完会 满足,且当当你们都 都熟悉,当时的业务完整篇 不前要引入TT。

但是我觉得想改到原有系统,为什么么办呢?当当你们都 的建议是直接给开源项目提需求但是bug,但弊端其他响应比较缓慢,其他就要看业务紧急程度了,但是我觉得太急那就只能被委托人改了,不过都有太急,建议做好备份但是应急手段即可。

社区活跃度:看看社区是否是活跃,发帖数、回复数、其他的问提补救速率单位单位等。

 2、小心应用 灰度发布

热爱技术但不拘泥于技术,爱分享,喜欢读书,是一名技术控、读书狂。

一蹶不振 了跟随原方案演进的能力。改不多一段话,即使原有开源项目继续演进,当当你们都 也无法合并了,但是差异不多。

 3、做好应急以防万一

开源项目主要目的是共享,我觉得其他为了当当你们都 歌词 难能可贵重复造轮子,尤其是在互联网这麼 有另另五个快速发展的领域,速率单位单位其他生命,引入开源项目,都前要节省几滴 的人力和时间,大大加快业务的发展速率单位单位,何乐而不为呢?

当当你们都 翻译过来更形象通俗:难能可贵重复造轮子。

软件领域和硬件领域最大的不同其他软件领域这麼 绝对的工业标准,当当你们都 都很尽兴,想为什么么玩为什么么玩。不像硬件领域,青春恋爱物语有另另五个尺寸与众不同的轮子,其它车都用不上,你的轮子工艺再高,质量再好也是白费。软件领域都前要造其他类事 的轮子,也基本都前要有处用,类事 你把缓存从Memcached换成Redis,不想有不多的其他的问提。

我觉得不想担心,当当你们都 的架构会不断演进的,等到真的前要这麼 高的但是当当你们都 再来架构重构,记住:难能可贵过早优化,过早优化是万恶之源!

功能上看起来很高大上,但相应的bug其他少,但是有的bug是致命的,类事 所有数据不可读,但是是被委托人研究源码写了有另另五个工具才恢复了部分数据。

类事 :但是要用MongoDB但是Redis,都前要用MySQL做备份存储。这麼 做我觉得比较复杂度和成本高其他,但关键时刻不想完会 救命!

为什么么办?

 1、保持纯洁,加以包装

1

 2、发名给你的轮子

当当你们都 在选则开源项目的但是,基本上都有聚焦于技术指标,类事 性能、可靠性、功能其他,而几乎不想去关注运维方面的能力。

只要当当你们都 做了底下的“深入研究、仔细测试”,发现没其他其他的问提,是否是就都前要放心大胆的应用到线上了呢?

有本身方式 是投入几被委托人从内到外完整篇 改一遍,将其改造成完整篇 符合当当你们都 业务需求的样子。

UC其他团队最初使用MySQL的但是,也这麼 为什么么研究过,经常有业务部门抱怨MySQL太慢了。我觉得经过定位,发现最关键的几次参数(类事 innodb_buffer_pool_size, sync_binlog,innodb_log_file_size等)都这麼 配置但是配置错误,性能当然会慢。

别高兴太早,即使你的研究再深入,测试再仔细,也还是要小心为妙,但是再为什么么深入的研究,再为什么么仔细的测试,都只能降低风险,但不但是完整篇 覆盖所有线上场景。

进行多种场景的性能测试;

这里当当你们都 的经验是聚焦于是否是满足业务,而不前要过于关注开源方案是否是牛逼。

我觉得但是一次故障就完整篇 反对尝试是不为什么么反应过度了,但我觉得故障也给当当你们都 提了有另另五个醒:对于重要的业务但是数据,使用开源项目时,最好有另外有另另五个比较心智性性性性性性成熟的一段话的一段话的方案做备份,尤其是数据存储。

除此以外,我觉得DRY原则摆在那里,但实际上开源项目反其他最不遵守DRY原则的,重复的轮子好多,尤其是歪果仁,一看哪个开源方案不爽,被委托人就吭哧吭哧搞有另另五个差不多的:你有MySQL,我有PostgreSQL;你有MongoDB,我有Cassandra;你有memcached,我有redis;你有Gson,我有Jackson;你有Angular,我有React……

通读开源项目的设计文档但是白皮书,了解其设计原理;

 1、深入研究 仔细测试

都前要从如下几方面进行研究和测试:

使用的公司数量:一般开源项目都会把采用了被委托人项目的公司列在主页上,公司越大越好,数量不多越好。

人及用开源项目,我觉得是完完整篇 全的“拿来主义”,就看几次Demo,把程序运行运行跑起来就开使英文部署到线上应用了。

3

某个业务使用了MongoDB,结果宕机后部分数据丢失,无法恢复,也这麼 其它备份,人工恢复都没方式 ,只能接有另另五个用户投诉补救有另另五个,原困DBA和运维从此但是都反对当当你们都 用MongoDB,即使是尝试性的。

用:如可使用开源方案

这点估计让人及大跌眼镜,为什么么讲了半天,最后又回到了“重复发名给你的轮子”呢?

改:如可基于开源项目二次开发

但但是要将方案应用到线上生产环境中,运维能力是必不可少的一环,但是一旦出其他的问提,运维、研发、测试都只能干瞪眼,求菩萨保佑了!

接下来我将根据加入UC 5年中与开源项目有关的经历,总结出其他“如可正确使用开源项目”的经验和教训。

当当你们都 在选则开源项目的但是,有另另五个头疼的其他的问提其他类事 的开源方案较多,但是底下的经常要宣称比前面的更加牛逼。

本文来自云栖社区商务媒体合作伙伴"DBAplus",原文发布时间:2016-03-03

但但是的使用过程给你很头疼,主要表现为:

开源方案日志是否是齐全:有的开源方案日志只能寥寥启动停止几行,出了其他的问提根本无法排查。

简单来说:但是你的业务要求10000 TPS,这麼 有另另五个100000 TPS 和1000000 TPS的方案是这麼 区别的。

总之放眼望去,我觉得类事 的轮子其他!类事 轮子不多,选则就给你头疼。

开源方案是否是有故障检测和恢复的能力,类事 告警、倒换等。

只能完整篇 取代MySQL,但是有两份存储,设计的但是每次都有进行讨论和决策。

但这麼 做几次比较严重的其他的问提:

 1、聚焦是否是满足业务

作者介绍:李运华

其他,不管研究多深入、测试多仔细、自信心多爆棚,时刻对线上要有敬畏之心,小心驶得万年船。当当你们都 的经验其他先在非核心的业务上用,但是有经验后慢慢扩展。

其他当当你们都 的建议是难能可贵改动原系统,其他要开发辅助系统: 监控,报警,负载均衡,管理等。

版本号:一般建议除非特殊情况,但是难能可贵选0.X版本的,大慨选1.X版本的,版本号越高越好。

比如说Memcached,通过一致性hash提供集群功能,但是当当你们都 的其他业务,缓存但是有一台宕机,整个业务但是就被拖慢了。这就要求当当你们都 提供缓存备份的功能,但Memcached又这麼 ,而Redis当时又这麼 集群功能。于是当当你们都 投入2-有另另俩被委托人花了大慨有另另五个月时间基于LevelDB的原理,被委托人做了一套缓存框架支持存储、备份、集群的功能,但是又在其他框架的基础上增加了跨机房同步的功能,很大程度上提升了业务的可用性水平。

形象点说:难能可贵重复发名轮子,但要找到大慨的轮子!你开的是保时捷,可别找个拖拉机的轮子。

以下内容主要分五个部分进行描述,分别是“选”、“用”、“改”。

当时尝试有另另五个社交类业务时,当当你们都 发现了TT(Tokyo Tyrant)其他开源方案,我觉得既不想完会 做缓存取代Memcached,又有持久化存储功能,都前要取代MySQL,很牛逼,很高大上,于是就在业务底下几滴 使用了。

有的项目是我亲身经历,都有我接触到的,都有我观察的,其中部分描述的细节但是难能可贵完整篇 准确,当当你们都 都前要结合被委托人的经历共同探讨。

其他,但是你有钱一群人有时间,投入人力去重复发名完美符合被委托人业务特点的轮子也是很好的选则!

然而现实往往这麼 这麼 美好,开源项目我觉得节省了几滴 的人力和时间,但带来的其他的问提其他少,相信绝大部分同学都踩过开源软件的坑,小的影响但是是宕机半小时,大的其他的问提但是是丢失几十万数据,甚至还有灾难性的事故原困完整篇 数据都丢失。

线上生产环境的比较复杂度,真的都有测试不想完会 覆盖的,前要小心谨慎。

 2、聚焦是否是心智性性性性性性成熟的一段话的一段话

完整篇 不想开源项目几乎是不但是的,当当你们都 前要更加聪明地选则和使用开源项目。

还是以TT为例吧,我觉得当当你们都 在应用但是专门安排有另另五个大牛看源码、做测试,做了大慨有另另五个月,但最后上线还是遇到各种其他的问提。

进行压力测试,连续跑几天,观察CPU、内存、磁盘IO等指标波动;

选:如可选则有另另五个开源项目

当当你们都 真的遇到异常断电后,文件被损坏,重启也恢复不了的故障,还好当时每天做了备份,于是只能用1天前的数据进行恢复,但当天的数据完整篇 丢失了。

开源方案是否是有命令行、管理控制台等维护工具,不想完会 就看系统运行时的情况。

还是以底下提到的TT为例:

投入不多,一般来说,redis其他级别的开源方案,真要被委托人改,大慨要投入有另另俩被委托人,做有另另五个月以上。

核对每个配置项的作用和影响,识别出关键配置项;

目前就职于阿里游戏,担任资深软件工程师。主要从事后台架构设计 与开发。共同带领团队负责部门的公共组件设计和开发。

功能我觉得牛逼,但需大慨较长时间熟悉各种细节。