- V秘团队一直致力于用技术改善产品。V秘后台的各种服务一直是通过完善的Devops流程自动部署到Docker容器集群。随着Swarm mode在Docker v1.12中正式发布,Swarm mode带来了诸如Docker集群,多主机网络等激动人心的特性。我们也在尝试将V秘服务部署到Docker Swarm Cluster获取更好的弹性计算能力。 然而我们将V秘的服务部署到Docker Swarm Cluster时遇到服务容器无法启动的错误。错误信息类似如下, starting container failed: could not add veth pair inside the network sandbox: could not … 
 Read More
- 在之前的文章我曾提到基于Angularjs的单页面应用在用户体验上的种种好处。然而任何事情都不是完美的,Angular和类似的框架通过应用内做页面路由的实现给SEO(也俗称搜索引擎优化)带来了不少麻烦。 首先,我们来看看页面内路由是如何实现的。默认Angularjs生成的页面uri类型如下, http://mydomain.com/#/app/page1 浏览器请求上面这个uri的时候,实际发送给服务器的请求地址是http://mydomain.com/, web服务器会将默认的页面响应给浏览器,比如index.html或index.php等。 浏览器返回的页面里面引入了Angularjs和其他应用需要的JS库。Angularjs应 … 
 Read More
- Spring框架下的分布式session管理- 在微服务和容器等技术的帮助下,Web应用可以较为容易的进行水平扩展,来部署更多的应用实例来提升请求处理数QPS。当Web服务有状态的时候,如何在集群下管理用户session成为新的待解决问题。 Spring Framework针对此问题衍生出了一个子项目Spring Session来实现集群下的session管理。该项目提供了以下功能: 提供API和实现管理用户session HttpSession - 替换实现应用容器(tomcat)中的HttpSession Clustered Sessions - 实现集群的session而不依赖任何应用容器特定的解决方案 Multiple Browser Sessions - 支持多个用 … 
 Read More
- 春天来了,V秘大家庭也新增了两位10后的传人。新爸爸经过一番忙乱后,希望在这里与大家分享V秘的架构,共同探讨如何快速的构建高可用,高性能的Web服务。 V秘致力于提供最好的在线视频制作云平台。让用户随时随地零门槛的快速制作出高质量高清晰度的视频,来纪念记录生活中有意义的时刻,同时将这份快乐传递给更多的家人朋友一起分享。 然而要可靠的可扩展的实现这样看似简单的需求,其背后确由众多知名开源技术,可靠的云服务,不间歇的监控运维来实现和保证的。 V秘架构的基本目标就是要实现, 服务的高扩展性。有有效可靠的方法支撑数万并发到数十万,百万及更多的并发请求。 服务的高可用性。各种服务都是多实例的集群,某些服务故障后,集群中的其他实例仍然能够提供服 … 
 Read More
- 阿里云提供的对象或者文件存储叫OSS,为应用程序提供了海量存储,按需付费等服务。应用程序则需要通过Aliyun OSS的各语言SDK才能操作(读,写,遍历等)OSS中的文件。 对运维人员来说,做一些数据维护工作的时候,通过SDK操作OSS中的文件就会比较麻烦。在linux/unix环境下,通常有一些工具把远程文件系统或云盘挂载为本地文件。在网络状况比较好的情况下,操作远程文件就像操作本地文件一样。例如,把Amazon S3,Dropbox云盘,可通过ssh登录的远程服务器上的磁盘挂载为本地文件系统。 之前也有第三方公司开发的工具把OSS bucket挂载为本地磁盘。出于安全考虑一直为敢使用。 终于,阿里云推出了官方开源版本 … 
 Read More
- 微信给公众平台提供了素材管理的接口,通过这一系列接口可以上传,接收以及管理图片,视频等多媒体文件。其中又分为临时和永久两种类型。永久素材有总量的限制,临时素材微信服务器只给保存3天。 最近V秘刚好有个同微信用户互动的场景,为用户美化微信拍摄的小视频。V秘后台服务器收到用户发送过来小视频(微信将其认做临时素材),将其美化处理后,再将美化的视频上传为临时素材,最终美化后的视频作为视频类型的客服消息被推送给用户。整个流程很简洁,用户发送小视频后,就坐等观看美化后的小视频了。 然而最终经过V秘开发团队的实践及测试,得出的结论是, ##微信公众平台的临时素材不能用!绝对的鸡肋! 公众平台上传素材的API以及使用已有素材发送视频消息API都很健 … 
 Read More
- 随着AngularJS等前端MVC框架的流行,AJAX的异步请求数据结合H5的push state等特性,极大的改善了网站的用户体验和页面加载性能。这类网站应用通常只有一个入口页面,通过应用内路由到不同的页面,所以俗称单页面(signle page application)应用。页面URL看起来如下, 网站首页 http://mysite.com/#/index 商品列表页 http://mysite.com/#/goods/list 商品详情页 http://mysite.com/#/goods/skuid 网站关于页 http://mysite.com/#/about 对浏览器而言,上面几个地址都是访问的网站**/目录,每 … 
 Read More
- 最近在提交前端代码后,前端代码的自动发布老是失败。失败的原因多是编译Docker镜像时在执行COPY语句拷贝文件到镜像文件系统时,扔出了'No space left on device'这个错误。这个错误根据描述非常好理解,就是docker文件系统所在磁盘没有了空间。 但是通过df -h命令,该磁盘至少还有3,4个G的剩余空间。而前端镜像的文件大小最多也不超过300M。在该磁盘通过touch,cp仍然可以创建文件。 所以这个问题非常奇怪,为什么docker或者操作系统抱怨磁盘没有了空间?在磁盘仍然剩余数个G的情况下? 再通过相关的查找后,docker的这个issue给了我启发。Linux文件系统的inode在耗尽后,该文件系统将不能 … 
 Read More
- Recently I wrote a Linux like initd script to start/stop my web application. The script works well when running it in shell of linux. The web application will run in background by daemon. However I found both daemon and web application(java) exited immediately if I started the script in Jenkins as a shell step of build … 
 Read More
- After uninstalling some applications from my Mac OSX, I found the applications that depends on JRE totally does not work. I noticed below symptoms, Eclipse Mars can not be launched, even though I specified the launching vm to another one( - java -versionstill work). The SWT native library failed to resolve the …
 Read More