高并发和高可用的一点思考

http://kriszhang.com/high_performance/queue.jpg
本文的架子参考张开套的《亿级流量网站架构核心技术》这本书分为四个部分:指导原则,高可用,高并发,实践案例。这篇文章说一说前三个部分,大部分内容都是我自己的思考,书只作为参考。 指导原则 高可用 事前 副本技术 隔离技术 配额技术 探知技术 预案 事发 监控和报警 事中 降级 回滚 failXXX系列 事后 高并发 提高处理速度 缓存 异步 增加处理人手 多线程 扩容 指导原则 书中所列举的,里有一些可能并不是原则,而是技巧。我理解的原则如下: 高并发原则...

设计稿自动生成可用页面的展望

https://gw.alipayobjects.com/zos/rmsportal/kKmnJjzKUOLvLlTfJvtj.png
这篇文章只打算描述我加入支付宝之后,在设计稿生成代码这个方向上自己做的尝试和看到的团队中的尝试。不谈行业历史,不争论方向。文章以现状的形成和我的想法演进为主脉络,文末会提到我所看到的新契机。所以读者如果对现状和推演没兴趣可以直接翻到后面《投石》一章。 三年前刚开始做 Sketch 生成代码插件时,定位的就是原型工具,不是可用页面。我当时认为直接由设计稿生成可用代码是走不通的,原因有两个: 当时的前端自己都还处在争论用什么框架的时期,得先解决了这个问题设计工具才可能生成被大部分开发者接受 ...

IntelliJ IDEA使用技巧(二十)——详述插件的安装及使用方法

https://image.evget.com//Content/files/2017/11/9/1fe57d1c64e941298e399a0a197ebddf636458321140704153.png
概述:IntelliJ IDEA 支持非常多的插件,熟练的使用插件,能够有效提高我们的开发效率以及用户体验。 IntelliJ IDEA 支持非常多的插件,熟练的使用插件,能够有效提高我们的开发效率以及用户体验。 标注 1:显示 IntelliJ IDEA 的插件分类, All plugins:显示 IntelliJ IDEA 支持的所有插件; 标注 2:打钩 √表示为已经启用的插件; 标注 4:安装插件仓库提供的插件; 标注 5:安装本地已经下载完的插件。

Boostnote是全球190个国家的OSS程序员的备忘录

https://boostnote.io/assets/img/logo.png
"Your markdown notes are saved automatically as you write and various formatting options have semi-live previews so you can double check what you’re writing. Text is formatted as you type.

Kubernetes节点资源耗尽状态的处理

http://tonybai.com/wp-content/uploads/alipay_qr_small.png
今天上午一到工位,就收到来自同事的“投诉”:私有云上的 Kubernetes cluster中的一个node似乎不工作了,因为专门部署于那个节点上的应用挂掉了,并且长时间没有恢复。这个公司私有云上Kubernetes集群是 v1.7.5版本,部署于双节假期之前。最近感觉K8s开发明显提速,连续发布版本,截至发稿时,最新发布的版本为 v1.8.1了。这个集群一直运行相对稳定,今天这个异常到底是怎么一回事呢?于是打开terminal,开始了问题的调查。

49 岁的程序员

https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/pic_reward_qrcode.2x3534dd.png
今天10 月4 日,中秋节,按身份证上的日子算,还正好是我49 岁生日。太太带儿子去长春参加全国击剑俱乐部联赛,我独自一人在家。一早起来,习惯性的打开笔记本,翻了翻自己写的代码,顺手做了一个小的优化,让系统配置参数又少了一个。数了数自己的代码行数,发现6 个月时间,居然已经写下了3 万8 千多行代码,这个代码量超过了我在美国工作十年的总和。 从1984 年高一的时候开始写Basic 语言程序到现在,程序员的生涯已经33 年。虽然经常写程序,也喜欢写程序,但从来认为写程序太简单,不值得去专门学,因此 ...

再谈Docker容器单机网络:利用iptables trace和ebtables log

http://tonybai.com/wp-content/uploads/docker-bridge-network-demo.png
这大半年一直在搞 Kubernetes。每次 搭建Kubernetes集群,或多或少都会被Kubernetes的“ 网络插件们”折腾折腾。因此,要说目前Kubernetes中最难搞的是什么?个人觉得莫过于其 Pod网络了,至少也是最难搞的之一。除此之外,以 Service和Pod为中心的Kubernetes架构还大量利用 iptables规则来实现Service的反向代理和负载均衡,这又与 Docker原生容器单机网络实现所基于的 linux bridge和 iptables规则糅合在一起,让troubleshooting ...

Python图表之pygal入门篇

http://upload-images.jianshu.io/upload_images/2726327-7ef79a9e8ecb7caf.PNG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240
例子来自此书: 《Python编程从入门到实战》【美】Eric Matthes pygal是一个SVG图表库。_SVG_是一种矢量图格式。全称Scalable Vector Graphics -- 可缩放矢量图形。 用浏览器打开svg,可以方便的与之交互。 来看一个简单的例子。它模拟了掷骰子。 import random class Die: """ 一个骰子类""" def __init__(self, num_sides=6): self.num_sides ...

Deepo:开箱即用的深度学习Docker镜像,集十余种深度学习框架于一身

https://avatars3.githubusercontent.com/u/2270240?s=400&v=4
Deepo is a Docker image with a full reproducible deep learning research environment. It contains most popular deep learning frameworks: theano, tensorflow, sonnet, pytorch, keras, lasagne, mxnet, cntk, chainer, caffe, torch.

源创会开源访谈:十年成长,Go语言的演化之路

http://tonybai.com/wp-content/uploads/alipay_qr_small.png
在参加 源创会沈阳站分享之前,接受了 开源中国社区编辑 王练的文字专访,以下是我针对专访稿的内容。 同时该专访稿首发于开源中国开源访谈栏目,大家可以点击 这里看到首发原稿。 大家好!我叫白明(Tony Bai),目前是 东软云科技的一名架构师,专职于服务端开发,日常工作主要使用 Go语言。我算是国内较早接触 Go语言的程序员兼Advocater了,平时在我的 博客、 微博和微信公众号”iamtonybai”上经常发表一些关于Go语言的文章和Go生态圈内的信息。

[1024] 老子今天不加班,程序员也需要自由

https://gold-cdn.xitu.io/v3/static/img/default.0a25035.png
今天是 1024,你们加班了吗?来聊聊你都是为什么加班,为了吐槽加班的不爽,掘金团队录了一首歌,心疼你们一秒。 老子今天不加班,末班车我不想赶 老子今天不加班,为了我的腰间盘 老子今天不加班,下班不要再提需求 今天不加班,程序员也需要自由 老子今天不加班,只想回家吃顿饭 整整工作一天,脑字混乱您别再为难 休都没有休息,屁股都是木的,眼是糊的 班儿都下咯通知发版,真的很烦 然后老板开始打气,同志仍需努努力 老子努不努力自己的事你丫管个屁 衣服攒了好几天了都没有时间洗 公司怨气不断累积请你不要自讨没趣 老子进 ...

Java 9 正式发布,新特性解读

https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/pic_reward_qrcode.2x3534dd.png
在历经多次跳票之后,Java 9 终于在千呼万唤中正式发布。从这个版本开始,Java 将每半年发布一个版本。作为霸占编程语言排行榜鳌头多年的老牌语言,Java 9 中有哪些不得不说的新特性?Java 语言的未来又将如何? 针对 Java 9 新特性的介绍已经非常多了,我这里不想再做一个百科全书一样的列表,希望从不同角度简要点评部分特性。 首先,谈到 Java 9 大家往往第一个想到的就是 Jigsaw 项目,这是一个雄心勃勃的项目。 大家知道,Java 已经发展超过20 年(95 年最初发布), ...

为什么 LinkedIn 放弃 MySQL slowlog,转用基于网络层的慢查询分析器?

https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/images/pic/appmsg/pic_reward_qrcode.2x3534dd.png
导读:对互联网应用来说,后端需要应付海量请求。如何在这些请求中快速定位出对数据库造成最大影响的部分,是业界难题。如何对线上查询进行科学的分析而不引起性能降低,也是很有技术含量的事情。本文是 LinkedIn 对以上问题的答案。 LinkedIn 大量使用MySQL,公司内部 500 多个服务依赖于MySQL。 为了方便管理以及提高资源利用率,我们使用多租户架构模式。 然而这种模式的一个主要缺点是,来自一个应用程序的查询可能会影响到其他应用程序。 虽然我们已经通过调整InnoDB ,操作系统和MySQL ...

什么是好的产品

https://upload.wikimedia.org/wikipedia/commons/thumb/3/33/MaslowsHierarchyOfNeeds.svg/900px-MaslowsHierarchyOfNeeds.svg.png
要去罗马首先要知道罗马在哪儿,要做出好产品也是如此。在本文中笔者试图从 PM 视角下找出较好的互联网产品的特性,请注意这里的“好”是相对的,这里笔者指的是真正解决了用户某痛点,给用户带来价值,长期时间内市场反映较好,非一夜成名(短期内用户爆发增长但无法持续增长),(与其垂直领域其他类似产品相比)用户量够大或长期持续高速增长,非用户被迫使用的(如钉钉),长期用户留存够佳且使用频率较高,不属于用户在手机空间满时会删掉的产品。 好的产品解决用户需求又挖掘用户需求 There are no ...

爬虫实战:爬虫之 web 自动化终极杀手 ( 上)

http://blog-10039692.file.myqcloud.com/1505718835752_6626_1505718836132.png
来自腾讯云 导语: 最近写了好几个简单的爬虫,踩了好几个深坑,在这里总结一下,给大家在编写爬虫时候能给点思路。本次爬虫内容有:静态页面的爬取。动态页面的爬取。web自动化终极爬虫。 分析: 数据获取(主要靠爬虫) 静态网页爬取 动态网页爬取 数据存储(python excel存储) Python Excel操作,保存结果 数据获取实战: 百度音乐(静态网页) 分析步骤 1 . 打开百度音乐:http://music.baidu.com/ 2 . 打开浏览器调试模式F12,选择Network+a...

爬虫实战:爬虫之 web 自动化终极杀手 ( 下)

http://blog-10039692.file.myqcloud.com/1505720129947_6778_1505720130335.png
来自腾讯云 接《 爬虫实战:爬虫之 web 自动化终极杀手 ( 上)》 再理一下方案步骤: 模拟用户登录 进入个人播放页 获取cookies 获取token cookie,并将其添加到headers中。 请求页面,获取数据 代码 def login(driver): spotify_name = 'manaxiaomeimei' spotify_pass = 'dajiagongyong' spotify_login = 'https://accounts....

大话爬虫的基本套路

https://blog.thankbabe.com/imgs/spider.jpg?v=1
网络爬虫也叫 网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据, 比如:如果响应内容是html,分析dom结构,进行dom解析、或者正则匹配,如果响应内容是xml/json数据,就可以转数据对象,然后对数据进行解析。 通过有效的爬虫手段批量采集数据,可以降低人工成本,提高有效数据量,给予运营/销售的数据支撑,加快产品发展。 目前互联网产品竞争激烈,业界大部分都会使用爬虫技术对竞品产品的数据进行挖掘、采 ...

Go语言:成长的十年

http://tonybai.com/wp-content/uploads/gophers10th.jpg
Go语言之父,Google大神 Rob Pike代表Go语言的另外两位缔造者 Robert Griesemer和 Ken Thompson在自己的博客上发表了一篇名为 《Go: Ten years and climbing》的文章,用以纪念Go语言从最初的设计idea起到目前的十年发展。笔者读完后,也是深有感触,因此在这里粗略翻译一下全文,希望能有更多的程序员加入到Gopher行列中来。 本周是创建Go语言十周年的纪念日。 记得第一次关于这门语言设计的讨论是在2007 年9 月20 日 ...

WeCron——微信上的定时提醒

http://wecron.betacat.io/static/img/qrcode.803e03bb8cc2.jpg
可能是东半球最简洁的一个提醒应用,一条语音或者文字消息,就可以设置提醒,没有APP,没有客户端,只有一个公众号。 扫码关注微定时公众号,现在就来试一下吧!

我是这样搞懂一个神奇的BUG

https://blog.fundebug.com/2017/09/06/fundebug-user-behavior-help-debug/beary_chat_alert.jpg
摘要: 通过分析用户的行为,才想得到为什么会出现这种情况! 前两天在BearyChat收到这样的一个报警消息: 409 ? Conflict ? 平时很少遇到这样的错误,貌似很严重的样子,吓得我赶紧查看到底发生了什么。 仔细查看错误详情发现是因为使用同一个邮箱账号多次注册导致后面的请求数据库直接报错。 但是,不应该啊!我们是事先有做检查的。如果该邮箱已经被注册,会提醒并且不让注册的。难道对方是个黑客,直接调用API发请求?如果是这样那就更加危险了,我们已经被黑客盯上了! 可是这样做对黑客 ...

156个Python网络爬虫资源,妈妈再也不用担心你找不到资源!

https://blog.thankbabe.com/imgs/gzh.jpg
本列表包含Python网页抓取和数据处理相关的库。 网络相关 通用 urllib - 网络库(标准库) requests - 网络库 grab - 网络库(基于pycurl) pycurl - 网络库 (与libcurl绑定) urllib3 - 具有线程安全连接池、文件psot支持、高可用的Python HTTP库 httplib2 - 网络库 RoboBrowser - 一个无需独立浏览器即可访问网页的简单、pythonic的库 MechanicalSoup - 能...

资源整理 | 32个Python爬虫项目让你一次吃到撑!

https://blog.thankbabe.com/imgs/gzh.jpg
今天为大家整理了32个Python爬虫项目。 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心。所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1]- 微信公众号爬虫。基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典。 DouBanSpider [2]- 豆瓣读书爬虫。可以爬下豆瓣读书标签下的所有图书,按评分排名依次存储,存储到Excel 中,可方便大家筛选搜罗,比如筛选评价人数>1000 ...

虚拟货币不宜投资

https://legofan.cc/wp-content/uploads/2017/09/img_59aed1a9005a6.jpg
本文是从投资的角度来看虚拟货币,赌博娱乐并不在考虑范围 最近比特币的疯长,连带着其它虚拟货币的大涨,让世人又看到了一次财富自由的机会。人人都恨自己为什么不早两三个月入手,不然现在早百万富翁了。然而似乎现在入市也不晚,这不上个月还涨了60%,下个月要求不高20%总该有吧,年底翻个翻,虽不财务自由,小康还是能拼一拼的。比特币要是买不起,还有以太币,莱特币,随便挑个,只要比特币涨,它们也不愁会低到哪去。 我只想说有以上想法的——请醒醒吧。这样的想法与赌博,买彩票何异。虽然虚拟货币还不能完全和赌博相 ...

在CDN网络中利用Nginx搭建源站缓存层

http://7sbqda.com1.z0.glb.clouddn.com/cdn-ntt-com2.jpg
It ’s a common practice to setup multiple reverse proxies to protect your website from exposing to public network directly, it adds more flexibilities in load balancing, deployments, caching, etc. This post presents the necessity of an extra caching layer ...

Java 一次线上 CPU 飙升问题的分析解决

https://storage.tianshuang.me/2017/09/prepub%20Full%20GC.png
前几日,下了班在家时突然收到监控报警,线上一组业务机器 CPU 被打满至 100%,为了保持服务的稳定运行,临时采取了升级配置、加机器等粗暴的方法将当晚扛了过去。 半夜想了下可能的原因,由于可能因素太多,不能确定,第二天到公司后,在一台预发机器上把 Java Mission Control 所需的参数配置好,然后就等待下一次问题出现呗,果然,没几天,在晚高峰时问题又复现了,马上将线上的流量分了一小部分到提前配置好的预发机器上,没过一会,预发机器的 负载也满了。在Java Mission ...

创业公司增长指南:如何建立,完善和规模化一个增长计划

https://dn-coding-net-production-pp.qbox.me/6837c46d-782e-4b4b-91ac-71c3493026ed.png
来自顶尖创业公司的 25 位杰出 Growth 专家的建议 “Growth hacks, ”正如Hotmail 在其用户的默认电子邮件签名中包含注册链接的行为,可以极大地推动产品适应市场(PMF )产品的早期病毒增长。然而,维持长期增长和数亿级的用户量需要科学的增长方式。实际上,Growth 专家再三强调“growth hacking ”并不在他们的词汇表中或是属于他们工作中依赖的东西。“Hacking ”意味着一种随意/ 消极的驱动方式,现实恰恰相反。增长很惊人的初创公司已经开始主动 ...

Comm(ent|it) 基于 GitHub 的评论系统

https://commentit.io/static/images/github.png
Just link the service to your Github account and give the neccesary permissions to Comm(ent|it). Unless you ask for it, we will never commit to master. We create a feature branch and make pull requests. Github can also be used to authenticate your readers ...

写个大家看的OpenStack Ocata部署教程

This is the Example of building Cloud Computing infrastracture by OpenStack Ocata. Please learn simply description about OpenStack below before building. (1) Main Components of OpenStack

无码科技寻找自然语言处理工程师

https://s0.wp.com/i/blank.jpg
无码科技致力构建值得用户信赖的搜索引擎。 是的, 无码科技已经完成天使轮融资了,接下来我们要找自然语言处理工程师。期待找到长期的合作伙伴,创始团队成员。 利用自然语言处理和机器学习算法对海量文本数据进行挖掘分析,包括但不限于文本聚类、语义理解、信息抽取、知识图谱、对话生成等。 尝试新的机器学习算法、计算框架,提升机器学习系统效率。 两年以上自然语言处理相关的研发经验。 具备较强的编码能力,扎实的数据结构和算法功底。 熟悉机器学习的基本算法与概念,如:逻辑回归、神经网络、决策树等。 Google+ ...

Readhub

https://cdn.readhub.me/static/assets/png/readhub_180.png
在此轮融资前,娱加娱乐获得过其他两轮融资,包括2015 年获得的来自IDG 资本的1000 万人民币A 轮融资和2016 年来自君联资本领投、IDG 、达晨创投和王思聪的普思资本跟投的1 亿人民币B 轮融资... 目前其主营业务是娱乐直播营销,同时兼顾艺人经纪、娱乐直播、电子竞技、品牌商业活动、资源营销、新型网络直播综艺节目等业务... 娱加娱乐CEO 王春雷向媒体表示,此次融资后,娱加娱乐将和芒果文创基金在网红包装和内容生产方面进行进一步合作,以更好打通网红的上升通道,提供更多的优质精品内容。

用Jenkins给CoreDNS配置自动编译

http://7sbqda.com1.z0.glb.clouddn.com/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20170810111858.png
Jenkins is a powerful automation tool, it provides hundreds of plugins to support building, deploying and automating any project. So does for Go! I would like to follow an example of creating a task for CoreDNSto illustrate what should be paid attention ...

详谈 Java 内存模型

http://img.blog.csdn.net/20170711065040678
版权声明:本文为博主原创文章,未经博主允许不得转载。 我们一起来讨论讨论java内存模型。理解内存模型对多线程编程无疑是有好处的。 我们写的java代码,自己看得懂,然而虚拟机是看不懂的,更不用说直接在机器上跑起来了。要让java代码按照我们的意图跑起来的话,需要以下几个过程。 java代码会经过javac编译器编译,转化成class文件,也就是常说的字节码。然后再经过jvm把字节码转化成机器可以识别的机器码,才能跑起来。 为什么要转化为字节码,而不是直接转化为机器码呢?这 ...