这周参加了QCon 2019北京站,这里记录下部分印象深刻的主题以及个人感受。 QCon是由InfoQ主办的综合性技术盛会,主题涵盖了大前端、高可用架构、容器技术、大数据、机器学习等各种热门技术主题。其中也不乏下一代分布式应用、混沌工程等前沿有意思的主题,后面会详细介绍相关的主题演讲。 工程效率提升 这是在QCon第一日个人感兴趣且非常有意思的一个系列主题。无论是创业公司、独角兽企业还是互联网巨头都希望不断提升工程效率,3个相关的分享分别来自BAT,可见互联网巨头们对团队效率提升的渴望和重视。 10倍速原则对工程生产力建设的方向性影响 这个talk来自腾讯的高级顾问乔梁,这位老兄已经连续10年在QCon上分享持续集成、持续交付等工程 …
Read More上周参加了ArchSummit(全球架构师峰会),在这里记录下部分参加的主题以及个人感受。 会议回顾 今年参加了几次技术会议,微服务、容器技术、区块链、大数据、机器学习以及人工智能都是当下最热门的主题。同样这次ArchSummit绝大部分topics都跟这些主题相关。 这次会议主要参加了两个专场主题,Kubernetes的应用和快手科技技术专题。 基于 Kubernetes 的 DevOps是来自微软Azure的容器工程师分享如何基于 Kubernetes 的 CI/CD 落地实践。该分享中提到了CI/CD各个步骤中都有众多的工具支持,如何选择合适Kubernetes的工具将持续集成和部署串联在一起是Devops中的主要挑战。分享者 …
Read MoreV秘开发团队一直使用着Jenkins CI来持续集成V秘服务的新功能和各种改进。近日,Jenkins CI在重启之后,很多已有任务的配置无法被Jenkins CI完整的加载,导致很多功能无法使用。导致我们整个网站的各种服务无法被升级更新了:-( Jenkins CI在管理控制台列出如下的错误信息,示意现有任务的部分配置由于错误无法加载。 CannotResolveClassException: hudson.plugins.git.GitSCM, CannotResolveClassException: com.cloudbees.jenkins.plugins.BitBucketTrigger, …
Read MoreMongoDB是目前最为流行的NoSQL数据库之一。V秘的后台数据就是保存在MongoDB中的哦;) 尽管MongoDB的性能为业界称道,但任何数据库系统使用中都存在着慢查询的问题。慢查询的性能问题,可能是由于使用非最优的查询语句,不正确的索引或其他配置原因导致的。但开发人员或数据库维护人员首先要找出这些低效的查询,才能做出对应的查询优化。 在MongoDB中实现慢查询的profile是非常容易,因为MongoDB内置了profile开关来记录执行时间触发了profile条件的查询。 参照db.setProfileLevel()的文档,通过以下命令就可以记录执行时长超过300ms的查询。 …
Read MoreSwarm mode在Docker v1.12中正式发布,Swarm mode带来了诸如Docker集群,容器编排,多主机网络等激动人心的特性。V秘团队也尝试着将各种后台服务部署到Docker Swarm Cluster获取更好的弹性计算能力。 Docker v1.12中正式发布的Docker Swarm在我们实用中发现仍有不少不足之处,让我们一一分享给大家。 无法将服务的published端口只绑定到特点的网卡上。比如我们的云主机(同时也是Swarm manager/node)有eth0和eth1两块网卡,分别连接内网和外网。我们计划在Docker Swarm中运行一个nginx服务,通过80/443端口提供HTTP/HTTPS服 …
Read MoreV秘团队一直致力于用技术改善产品。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 MoreSpring框架下的分布式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