新工作第八周

在《新工作第六周》中说到架构部署图,第一部分就是使用SLB替代自建的七层,使用成熟的负载均衡方案。本周起统计了当前Web的带宽和QPS,从成本、可用性、系统结构、优缺点、实施步骤等方面起草了购买SLB的方案,一旦是时候,Web应用层系统架构就比较完整了,这也是非常传统和成熟的解决方案,同时SLB也能做四层的负载均衡。
即使使用最简单的单SLB实例,搭配同区域多可用区域的ECS,也能具备同城灾备的能力。在期间还能梳理Web单元,整理服务器和软件安装文档。
使用阿里云全家桶,重要的一点就是选型正确和合理,明白每个服务的适用场景,尤其要注意成本,比如目前我们单台ECS的出口带宽是100M,非常浪费。
第二个事情优化了关注和粉丝服务,将关注数和粉丝数放到redis中,先前使用数据库的count查询。其实类似于“数”的服务很适合存储到redis的hash结构中,比如我的收藏数、点赞数都可以放到同一个key中,性能好,存储量不大,也容易扩展,需要注意的是redis中的的“数”和数据库中的“数”必须是同步的。在这个实施过程中,对后台的cron代码有了更多的了解。
第三个事情是关于ELK的,后续可能要做站内搜索,所以做了一些准备工作,安装了 kibana 和 cerebro,kibana 是ELK官方的 elasticsearch Web 管理工具,而 cerebro 更偏向运维 elasticsearch,有了这些工具,后面在管理的时候更方便。
目前我们的 elasticsearch 部署在两台服务器上,共三个节点,集群没有配置 master 自动切换,避免了脑裂问题,如果产品没有大量依赖 elasticsearch 的场景下,我觉得这样配置是没有问题的。
不知道什么原因,虽然有三个节点,但第二个副本节点里面一直没有数据(可能以前的同事搞了个半成品),后来看了下,当前设置的副本集个数是1,所以第二个副本节点虽然启用了,但没有复制数据,我在 cerebro 中配置了2个副本集,2G的数据在10s内就复制完成了,性能确实很强悍。
第四个事情,我们服务需要区分国内,国外服务,最后使用了 IPIP.NET 的IP库服务,是免费的,不知道准确度如何,后来才发现 IPIP.NET 是高春辉的公司,我记得以前还在 gtalk 请教过他问题,很不错的一个人。

第五个事情就是有时候我们要经常分析其他网站的内容,如果你根据他们的页面结构去分析,就要自行写代码,现在网上有很多开源的服务(比如微博:
https://github.com/dataabc/weiboSpider,B站:https://github.com/Henryhaohao/Bilibili_video_download),能够节省很多时间,开源真的很伟大。
我记得以前在分析网易、搜狐博客的时候,经常自己写代码,写的累不说,还效果不好。也发现这两个服务都是Python写的,虽然Python排名很不错,但我今年找工作的时候发现需要Python的企业不多,大部分都是Go语言或者Java语言,我还专门问过以前领导,应该学门什么语言,他推荐Java, 企业级的语言,包括现在很多中间件都是Java写的,但太庞大了,我从没接触过,有机会还是学Go语言,体系小一点,希望明年上半年能用在工作中,当然我Python有一些基础,千万不能荒废。
第六个事情让我有点困惑,现在很多客户端以小程序的形式将内容分享给其他人,标准的形式就是标题、内容、图片。如果想扩充更多的元素,比如在图片上面放一些文字,就要自己想解决方案。
我还专门问了一些以前的前端同事,都说是客户端或JS利用canvas绘图然后保存为图片,那服务器端能做吗?自己不太懂前端的知识,但canvas应该是利用了浏览器的特性,然后进行绘图,这也说明JS的牛逼之处在于它的宿主环境是浏览器(或者说本地设备的能力)。
而服务器端如果要实现,就要自行绘图,包括排版、字体,感觉不是特别顺畅。那还有其他解决方案吗?前同事发给我一个开源的项目(https://github.com/niklasvh/html2canvas),原理就是利用浏览器对HTML页面进行截屏,然后生成图片。
受到这个启发,那么在服务器端能否使用 headless 浏览器对HTML进行截屏?找到一个项目 https://github.com/spatie/browsershot,今天弄了下,可以实现,但效果好像很不好,明天有时间再弄下,会专门写一篇文章说明。
最后说说感受吧,热情和态度有时候是好事,但不能当饭吃;对于急性子的人来说,不太喜欢拐弯抹角,看做事的出发点,但有时候又要有方法论,这样才能解决问题,很多事情并不完全非对就是错。
来新公司后,我很注意和其他人沟通,尽量照顾别人的感受,但有时候还是本性暴露,性格这东西还是很难改的。都说表情能反映人的情绪,不知道我修炼的怎么样了。

分享篇文章,没有结论,但给了一些启发。
原则性很重要,就是你处理事情的态度不会随着感受、场景去变化,总是有自己的核心目标,而我经常睡了一觉,观点就可能变化了。
说到学习方法论,网上看到一个观点,我觉得很不错:

在我的职业生涯中遇到一件事就是
我看了mschart 一天的文档~ 最后遇到一个问题不知道怎么解决
然后问了我的组长,他完全没有看过文档,但他通过打断点调试+及时窗口来分析
给我很大的启发,就是遇到一件你完全没有接触过的事情,你有什么方法去弄明白它。
而这些方法一旦形成~是十分宝贵的
今天我老婆说,今年找工作的时候,很多人帮你了,你应该多联系联系,不能像以前那样总不联系,我觉得她说的很对。