站内搜索

本次搜索找到结果 68 条

本文分享自腾云阁

作者介绍:韩伟,1999年大学实习期加入初创期的网易,成为第30号员工,8年间从程序员开始,历任项目经理、产品总监。2007年后创业4年,开发过视频直播社区,及多款页游产品。2011年后就职于腾讯游戏研发部公共技术中心架构规划组,专注于通用游戏技术底层的研发。

在分布式程序架构中,如果我们需要整个体系有更高的稳定性,能够对进程容灾或者动态扩容提供支持,那么最难解决的问题,就是每个进程中的内存状态。因为进程一旦毁灭,内存中的状态会消失,这就很难不影响提供的服务。所以我们需要一种方法,让进程的内存状态,不太影响整体服务,甚至最好能变成“无状态”的服务。当然“状态”如果不写入磁盘,始终还是需要某些进程来承载的。在现在流行的 WEB 开发模式中,很多人会使用 PHP+Memcached+MySQL 这种模型,在这里,PHP 就是无状态的,因为状态都是放在 Memcached 里面。这种做法对于 PHP 来说,是可以随时动态的毁灭或者新建,但是 Memcached 进程就要保证稳定才行;而且 Memcached 作为一个额外的进程,和它通信本身也会消耗更多的延迟时间。因此我们需要一种更灵活和通用的进程状态保存方案,我们把这种任务叫做“分布式缓存”的策略。我们希望进程在读取数据的时候,能有最高的性能,最好能和在堆内存中读写类似,又希望这些缓存数据,能被放在多个进程内,以分布式的形态提供高吞吐的服务,其中最关键的问题,就是缓存数据的同步。

何为不停机发布?本文所说的不停机发布,是指在不停止对外服务的前提下完成应用的更新。与热部署的区别在于,热部署关注于应用层面并且以不重启应用为前提,而不停机发布则关注于服务层面。随着摩尔定律逐渐逼近极限和多核时代的到来,分布式应用已经成为事实上的主流。下文首先给出一种通用的适用于分布式应用环境的不停机发布方式,然后再介绍Master/Worker这种常见的适用于单机应用的不停机发布方式。Cluster模式对于运行于集群环境的分布式应用,一般在应用之上都有一层负载均衡(LB)。如果在发布过程中,在更新任一节点(也可以是一组节点)前先关闭该节点对应的负载,更新完再打开负载,即可实现整体服务的不停机发布。在此基础上,为了...
BYI_API上线已经两年多了,总计调用量已经超过千万次。虽然名叫API,但其实和API没太大关系,只是一些免费开放使用的辅助接口罢了。两年间共相继开放了favicon图标获取、网站首屏截图、短网址、IP地理位置查询等服务,后来因为维护及服务器原因(个人维护,单台架构,无法承载过多请求,加上被人滥用等)又相继停止了大部分服务,目前仅留了favicon获取服务可以正常使用。网站首屏截图的服务目前没发现国内可用的服务,于是自己写了一套,但这个服务需要抓取目标网站的首页,并在服务器端渲染首页图片,然后再缩小到需要的尺寸,对服务器的开销特别大,于是不得不在开放六个月后关停此项服务。让我决心关停此项服务的最大原因倒不是服务...
我的API服务已经迁到docker以及美国服务器有一周的时间了,不知道是网络的问题还是docker的问题,迁到美国的服务器后明显感觉并发时不如之前在阿里云时稳定。之前在阿里云部署时一个页面40个请求毫无压力(之前也没用docker,直接LNMP架构部署),但在迁移之后只要并发数量一高,FPM进程准会挂掉。我自己使用的一个工具页面上有四十多个小图标需要调用这个API服务,只要一刷新FPM必挂。尝试过调整docker内FPM进程的子进程数量,效果并不明显,加上服务器配置低,单个FPM进程子进程数不能调太高,否则容易影响其它服务(我猜的)。于是乎想到一个办法:启动两个FPM容器,两个容器拥有相同的配置以及子进程数,两者...
已经有段时间没写过东西了,最近在着手把之前的PHP服务docker化,以方便在两台服务器之间部署。整个学习和使用docker的过程还算顺利吧,但在部署PHPFPM的过程中遇到了一些问题,以下作为记录供遇到同样问题的人参考吧。系统架构因为我可能会经常修改Nginx配置,加上我是自己编译的最新版的Nginx+Openssl(为了启用HTTP/2),所以就懒得把Nginx打包成docker镜像了,而是直接将Nginx装在了宿主机,并开放80和443端口。系统所需的除Nginx以外的其它服务全部由docker提供服务,如PHP和Redis。每一个服务使用一个容器,均为官方镜像。Redis的使用就不说了,比较简单,说下在使...
一直有对博客进行改版的想法。从2013年最开始搭建时候使用的Wordpress博客到现在的hexo静态博客,中间也有过自行开发的版本,但没有使用多久。之前自行开发的版本是使用CodeIgniter框架,力求做的简单。可能是受wordpress影响太深吧,现在想想当初开发的“简单”的版本也还是太过于复杂了,很多功能都是可以抛弃不要的。自己设计的主题也不再符合现在“极简”的审美观念。主要说下现在吧。几个月前从wordpress迁移到hexo,并且不得不丢弃了所有的评论数据改为使用Disqus。博客使用NexT主题,并把所有内容生成静态文件。刚开始是部署在自己服务器上,后来改为同时部署到CodingPages和阿里云虚...

JetBrains 家族开发的一系列 IDE 目前被越来越多的人所使用,包括 PHPStorm、WebStorm、IntelliJ IDEA等。

今天就以 PHPStorm 为例,说下如何在 PHPStorm 中快速插入当前时间。方法可对 JetBrains 家族的所有 IDE 通用,并且可定制为快速插入任意模板内容。

Laravel5中提供了一种通过.env文件定义环境变量的方式,根据官方文档的说明应该在不同的环境下使用不同的.env文件,并且此文件不应该提交到版本控制中去。如此设定自然是为了方便不同的环境或者多名开发人员完全可以使用自已的.env环境变量。但是官方文档中对于如何自定义.env文件中的环境变量却提的很少。文档中只提及了在需要自定义环境变量时最好是在.env.example文件中写一份变量的定义,以方便其他开发人员配置。下面就以我的“遭遇”来讲下Laravel5中如何自定义环境变量。(内容比较啰嗦,可直接跳到最后环境变量的正确用法部分)问题因为我需要路由里面根据不同的二级域名选择不同的控制器,而测试环境和生产环境...
2003年4月7日,马云,在杭州,成立了一个神秘的组织。他叫来十位员工,要他们签了一份协议,这份协议要求他们立刻离开阿里巴巴,去做一个神秘的项目。这个项目要求绝对保密,老马戏称“连说梦话被老婆听到都不行,谁要是透漏出去,我将追杀到天涯海角”。这份协议是英文版的,匆忙之间,大多数人根本来不及看懂,但出于对老马的信任,都卷起铺盖离开了阿里巴巴。他们去了一个神秘的据点——湖畔花园小区的一套未装修的房子里,房子的主人是马云。这伙人刚进去的时候,马云给他们布置了一个任务,就是在最短的时间内做出一个个人对个人(C2C)的商品交易的网站。现在出一个问题考考读者,看你适不适合做淘宝的创业团队。亲,要是让你来做,你怎么做?在说出这...
这两天在做公司的PC站时因为需要使用angular的$http服务存取数据,而且接口又在另一个域名下面,不得不研究下跨域的问题.以下把这两天遇到的一些问题总结下.(都是我自己遇到的一些问题,所以可能不太全面)Access-Control-Allow-Origin的问题跨域遇到的第一个问题就是Access-Control-Allow-Origin的错误,Chrome报错Responsetopreflightrequestdoesn'tpassaccesscontrolcheck:No'Access-Control-Allow-Origin'headerispresentonthereques...