加速你的站点访问

作者:JerryXia | 发表于 , 阅读 (0)
2016 年 07 月 15 日devops对于一个站点,大家应该都比较清楚,资源大概就分为静态资源(js/css等),图片,文件,动态数据等。对于加快动态数据访问,通常是需要后端程序或数据结构作优化,才能比较明显地得到提升,并不是一个立竿见影的过程。但对于静态资源(js/css等),图片,文件等的访问,则可以通过一些缓存,压缩,合并等技术,就能得到比较明显的提升,本文将探讨下使用缓存来加快静态资源,图片等的访问,主要使用Varnish。
动静态资源分离通常,对于具有一定规模的站点,是需要将动态资源(如后端服务提供的API数据接口)和静态资源(如图片,文件,js/css等)独立部署的,因为这些资源具有不同的访问属性,在运维层面也会有不同的策略,比如服务器配置,缓存策略等,下面是一个比较简易的部署架构:
对静态资源进行缓存将动静态资源分离访问后,由于静态资源通常不会有内容更新,所以对它们进行缓存处理是再好不过,这也减少了不必要的资源解析,加载等,对于静态资源的缓存,也有许多比较成熟的解决方案,如Squid,Apache Traffic Server,Varnish,Nginx等,这里...阅读全文

Ansible实践

作者:JerryXia | 发表于 , 阅读 (0)
上面使用命令行方式(Ad-Hoc)运行了Ansible任务,但实际中这样做是很少的,往往任务不会只有一个,而常会执行多个任务,于是需要一种描述语言来描述一些列任务的执行,这就是Playbook。Playbook使用YAML文件格式编写,如:
---- hosts: webservers     # 主机列表vars:                 # 变量http_port: 80max_clients: 200remote_user: root     # ssh用户tasks:                # 任务列表- name: ensure apache is at the latest versionyum: name=httpd state=latest- name: write the apache config filetemplate: src=/srv/httpd.j2 dest=/etc/httpd.confnotify:- restart apache- name: ensure apache is running (and enable it at b...阅读全文

统一日志平台构建

作者:JerryXia | 发表于 , 阅读 (0)
2016 年 05 月 20 日devops随着业务不断扩大,系统产生的各种日志也已经趋于暴涨,要想从这些庞大的日志中检索出自己想要的信息,特别是一些错误信息,是至关重要的。对于一个比较成熟的日志平台,需要解决几个问题:如何规范日志,如何收集日志,如何传输日志,如何存储日志,如何分析展示日志等等,恰逢最近需要为业务团队提供日志服务,旨在能及时发现并解决线上出现的异常问题,主要是从ELK Stack出发进行日志平台构建,本文将阐述其中的一些细节和思路。
日志平台构建背景随着业务系统的不断增长,应用产生的日志会越来越庞大,则对这些日志进行收集,检索,分析,监控等操作,这些东西将成为开发人员分析和排查问题的利器。最近由于应用服务不断扩容,基本每个应用服务的实例会在10个以上,这对开发人员需要快速查看日志带来很大问题,所以需要将一些重要的日志信息(错误,警告等)收集起来,并作友好展示。
...阅读全文

一致性哈希

作者:JerryXia | 发表于 , 阅读 (0)
1. 该哈希算法不能保证负载均衡: 即多个缓存服务器所存放的资源会不够均衡,一些节点负载肯可能很高,一些则比较低;
2. 在缓存服务器节点数量发生变化时,哈希取模公式就得发生变化hash(r) mod n',这时,资源r与原有缓存服务器的映射关系将被打破,并且影响很大。
若使用一致性哈希将解决上面的问题,一致性哈希首先会将缓存服务器节点分布在一个哈希值范围为0~2^32的圆环内:再通过同样的哈希算法将资源映射到环内,这样r1将存放在s1服务器上,r2存放在s2服务器上,r3,r4存在在s3服务器上:若此时s2服务器发生崩溃,受影响的仅是s1与s2之间的资源,将被映射到s3上:又或者s2与s3之间增加了s4,此时受影响的仅是s4与s2之间的资源,将被映射到s4上:那么可以看下如何将缓存服务器节点和资源哈希到环上:// node通常为Server主机地址private void addNode(String node) {// 通过md5出一个长度为16的字节数组byte[] digest = md5(node.toString());for (int h = 0; h < 4; h+...阅读全文

分布式系统调用跟踪实践

作者:JerryXia | 发表于 , 阅读 (0)
2016 年 10 月 15 日devops对于业务发展前期,可能我们会比较关注单个请求的耗时,频次等基本指标,以针对作出相应调整或优化。但随着系统业务发展,整个系统的调用链将变得愈发复杂,一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求变慢或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何快读定位服务故障点,以对症下药。于是就有了分布式系统调用跟踪的诞生。本文将阐述与分布式系统调用跟踪相关的一些实践经验。
什么是分布式系统调用跟踪对多个相互协作的子系统之间的调用链及依赖关系进行跟踪;系统间调用包括但不仅限于HTTP,RPC,RMI等;...阅读全文