400 并发查询繁忙这个事情算是开发的时候数据管理的坑了,互联网项目为了性能,通常是在数据库存冗余数据,交给数据库的语句最好都是单表查询。
要完全填掉这个坑,估计要改一下数据库的字段和查询语句,尽可能让执行的 SQL 语句实现单表查询,简单的 join 宁愿分成两步先取 ID 再去另一个表作 where in 。把数据库的处理提高一个量级,能支持到 4000 每秒,就没有这些事了。
临时解决方案也得是加个内存缓存,先把复杂查询的结果都缓存一下。数据库做读写分离将数据库拆成主从结构也可以提高几倍查询性能。
应急就是加配置加机器了,但是 SQL 处理上不去是硬伤。
好奇到底是多大的并发量击穿了 MySQL 。
有没有使用 Redis memcached 之类的缓存热数据?
MySQL 如果不是没有建索引或特别复杂的联表查询,一秒跑几千个查询也是绰绰有余的。
这个故障挺有价值的, tornado 爆掉了 MySQL 的查询性能。
TorMySQL 的并发是不是开的也高了点,失去平缓峰值的作用。导致峰值直接击穿 MySQL 。
要是下班之后的个人时间都没有用来写点个人的代码,看点相关的书籍,那算不上是感兴趣了吧。
真感兴趣的事情,玩起来是开心的。
出队列阻塞就是消费者的处理速度跟不上生产者产生的任务,加消费者提高处理速度。
消费者加到极限还处理不过来,实在有爆内存的风险的时候,可以考虑将任务数据持久化,避免数据丢失,先把任务状态保存下来,根据具体业务做优化调整,等待异常问题解决之后再继续处理。
v2ex 在外企的员工不多呀,这种在家办公的形式,很多外企的开发团队都支持,尤其是在外企做欧美项目的团队,住家里干活几个月不到公司很常见。
这种远程协作是需要很多 IT 基础工具支持的,远程电话会议系统、邮件系统、财务报销业务都要跟得上远程办公的需求才能这么做。
仅仅只是把办公地点挪到二线三线是不够的,单单需求沟通的事情就要消耗很多
日千万 PV ,第一个问题在写入量上面,但是算下来就是峰值一秒顶多就是一千的日志, MySQL 绝对可以扛得住,至于接收日志的 Web 处理如果单台的性能不行,分几台服务器可以扛得住。用 NoSQL 撑写入量在数据管理上更容易做分布式。
其次是分析计算,这个重计算的事情,看业务有多复杂了,如果计算模型很复杂用 spark 、 Hadoop 这类的计算框架来节省开发成本也不错。如果不是很复杂就是简单的统计汇总可以不用那么重型的计算框架,自己写。
一问入学就很尴尬了。尤其 HR 的简历关,比别人多一年。
如果延期毕业是因为去当兵、打工或者旅游之类的,可能算加分。
但是大部分延期是因为挂科补考不过,这个可是大减分。
自己权衡了。如果问起了回答为了实习或者校招申请延期了,估计 HR 那关都不好过。
如果日志分析的实时性要求不高,同步文件异步处理。这样可以避免日志的峰值。新增文件提醒上, Linux 有 inotify 这个事件可以监听,文件的增删改都可以监听到。但最好把分析入库的处理另外开定时任务处理,没必要实时监控。
如果一定要实时处理日志,用 socket 通信要在客户端和服务端都做好异常处理重发重连的检测,这个部署调试的成本会比文件同步的大。
如果房间是由选择服务器发起创建的,确实会出现一段时间内的新用户请求都集中在同一台逻辑服务器上。
这个属于峰值抖动的问题,应该可以通过其它判断处理平缓抖动,比如创建保存所有同类型的逻辑服务器的信息到一个环形数组。
每一次需要创建房间时,取数组游标指向的逻辑服务器,做个判断:去数据库取服务器负载检测是否满足创建房间的负载,不满足则修改数组游标到下一个继续判断,满足则创建之后修改数组游标到下一个。这样可以平缓峰值的抖动,将创建房间的需求按数组的顺序是依次在不同服务器创建。
公司肯定是愿意招能马上干活的人,至于给机会学了就能上手这个事情,这种机会要么公司内部人员消化了,要么给没毕业的实习生了。已经工作的人很难有这种实习机会了。
一定要入行互联网公司,就不要在意一时的薪资了,运维这岗位太看项目经验,能有机会刷一个靠谱的项目到简历上面,再跳才有机会薪资翻番。
如果把之前的开发功底捡起来, web 开发的话,自己能写一个博客之类的,这么全面的技能去找个入门的开发岗位还是有机会的。
@
fsneak如果有那么精细的参数。按房间类型开设多个队列,队列为空则由选择服务器计算是否需要创建。
逻辑服务器将房间信息按房间类型推送到不同的队列。
选择服务器按照用户数据判断从哪个队列取房间信息给用户。如果队列为空再取服务器的负载信息判断在哪一台服务器创建新的房间。
设计一个令牌做分发,我的思路是。如果逻辑服务器能够获得用户退出的事件。
那么令牌服务器维护一个空闲位置的队列。当逻辑服务器的房间创建时,主动将空闲位置添加到选择服务器的空闲位置队列中。这样只要有用户申请连接就从队列取空闲位置参数返回。
当逻辑服务器获得用户退出事件,则说明房间又有新的空位,就再推送空位参数到分发服务器的队列中。
这样可以保证一个位置一个用户,避免频繁读写数据库,扩展新逻辑服务器也比较容易。
这些都是企业办公工具层面的列举,技能很广,但是缺少一根主线,如果没有规模大一些的项目经验,简历上面可能没有优势,因为这些除了开发技能,大部分都是实习生或者一年工作经验的岗位在老手指导下面可以完成的活,再往上提升应该是一些企业服务软件的实施。
按简历的话,去互联网公司没有优势,大多数互联网公司的运维要做的是服务器层面的事情,比如 linux 服务器性能监控报警,自动化部署这一类的事情。要是想过互联网的简历关,要在 linux 上面下很多功夫补 linux 系统的基础,比如服务器不响应服务、负载太高,如何通过日志和系统监控数据查找瓶颈,如何解决瓶颈。
非要进互联网公司,可以考虑先投一些 IDC 机房的岗位,把 linux 系统的实践经验这块补上,或者去小的互联网公司,实实在在跟着把服务器的部署,代码升级这类的事情都做一下,一级一级往上跳。
去做支持企业办公的岗位就很有优势,传统行业的 IT 部门比较契合技能需求,尤其还有开发技能,写写代码完成一些监控和自动化的工作。要是图轻松,看看可以去这类传统行业的 IT 部门做技术支持,会有很多个人时间。碰上 IT 实施很弱的中型公司,可以做到不错的 IT 管理岗位,头衔可以挂 IT 技术总监,管管公司网站、企业化服务软件、网络推广业务这类的需求,做好和外包服务商的需求沟通和验收。这种岗位很多传统行业的公司缺人,一方面公司当下没有太多的 IT 需求,另一方面使用一些企业化服务软件之后也了解到计算机对办公效率提升的效果,又很希望能过有熟悉企业业务和 IT 技能的人帮助公司提高办公效率,最重要的是不要被外包商坑。
最实际的一个例子,很多企业找外包商做企业门户站的时候,由于缺少服务器运维人员,往往与外包公司签维护合同,连域名都是外包公司的,每年换换企业站模板+网站带宽+域名续费的一套费用都是十几万起跳的。
应该是 Java 。
动态语言虽然轮子多,但是长得都差不多,开发规范可遵守可不遵守。而且动态语言 PHP 、 python 都有性能硬伤,涉及计算业务都会考虑 C 系的开源工具,混合开发很常见。
Java 的工程管理规范一直很完善,可以做到不同框架、不同 ORM 的开发规范不同,框架之间的开发规范不同,迁移起来真的有可能吵起来。并且 Java 本身的工具与性能都不错,各种功能和业务的中间件都有,碰到的 Java 开发都有我能靠 Java 单挑世界的心态,时间给够用 Java 可以写任何业务,用啥 Redis ,我就用个队列业务,自己写个服务就好了。
说明钱还是没给够。
按这个需求,看起来是集团开新业务急需有经验的架构师以上的人员帮忙填坑,是要找一个大项目组挑过技术 leader 活的人,过往项目业务契合集团业务最好,这种不找猎头,也该去有类似业务的竞争对手那边挖角,运气好能挖一个团队过来,直接买成型团队的经验,是最省钱的。
看起来写好一个洗数据的任务,专门将异常数据挑出来,先将洗过的基础数据序列化存到数据库或者文件,预留一个处理标识。
现有的计算业务读取洗过的数据,先检测处理标识是否处理过,没有处理过则交给计算业务处理,处理过则跳过。
这样不需要对现有代码进行大的修改,只要把洗数据的异常处理完善,处理的状态也不会因为程序崩溃而丢失太多。
任务没有切分好职责。步骤也没有拆分好。
1.假设计算完写入一条数据,那么这条数据的索引是什么?下一次要更新这条数据需要拿到那些信息才能查询到?理清楚这个对任务的管理非常重要,只要把这个数据的索引确定了,至少不用删除重新计算。
2.存入内存的基础数据,进行计算时会产生哪些数据结构和数据?如果没有使用内存缓存 redis 、 memcache 之类的,可以使用写入文件的方式将数据结构和数据序列化到文件中,这样下一次读取数据不需要重新建模,可以直接计算。
3.计算的步骤能不能切分成几个无上下文状态的任务,将计算步骤拆开,每一个步骤只负责读取数据进行计算,计算之后将结果写入 Queue 或者文件,提供给另外一个步骤的读取处理,这样可以更方便存储不同步骤产生的缓存数据,方便出现异常时进行恢复。
我蹦出来说只是 V2EX 除了作者不允许全文转载,转载只留源网址。
西乔特意留的版权声明要求转载不能删除。
如果这是按购买广告位的形式买的西乔下面的广告宣传的话,应该没有修改版权声明的权利。
如果确实是花钱购买的定制广告,商务这钱花的太冤枉。至少在漫画内容上提一些嵌入 LOGO 的要求,例如在请兼职程序员这一个位置,电脑屏幕或者某个位置留个小 LOGO 或者网址根本不影响正文。完全浪费了定制内容的转发传播带来的受众。
西乔的漫画,公众账号还知道保留西乔的版权和声明,这到网站就只留自己的了,转了西乔的漫画给人留个链接多好,这么直接转完给加自己的广告,根本不尊重别人的知识产权,让别人怎么看这个产品的团队价值观?