架构师
文章平均质量分 74
饥渴计科极客杰铿
最讨厌伸手党,而不巧本人也是伸手党
展开
-
架构师日记——Nginx的配置优化
优化Nginx的配置,做到合理高效的使用优化的方向和目标,无外乎: 1. 尽量提高单台机器处理效率 2. 尽量降低单台机器的负载 3. 尽量降低磁盘的I/O 4. 尽量降低网络I/O 5. 尽量减少内存使用 6. 尽量高效利用CPU生产环境下,应该使Nginx模块最小化,就是用到哪几个就开哪几个,这个需要在编译安装Nginx的时候做用户和组,最好是为Nginx创建用户和组,并单独设置权限原创 2017-07-29 16:58:49 · 333 阅读 · 0 评论 -
架构师日记——手写利用HTTP协议远程模块调用
远程模块调用比较流行的协议有RPC协议、RMI协议和HTTP协议 本篇博客教大家如何使用HTTP协议试远程模块的调用1.定架构总体架构如下 接下来我一个一个讲解他们的作用2.ModuleModel这个类的作用是记录不同uuid对应的module的信息,包括远端ip和url等,代码如下/** * 调用远端方法的协议类 */public class InteractiveModel {原创 2017-08-24 09:41:57 · 576 阅读 · 0 评论 -
架构师日记——Memcached简介和工作原理
Memcached是什么Memcached是一款开源的、高性能的、分布式的内存对象缓存系统Memcached能干什么最主要的功能就是:在内存中缓存数据,以减轻数据库负载。 它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached特点1.在内存中以键/值对存储,性能好 2.协议简单(基于文本行),功能强大 3.基于libevent的事件处理,无阻原创 2017-08-30 09:43:35 · 405 阅读 · 0 评论 -
架构师日记——Memcached的限制和使用建议
Memcached的限制在Memcached中可以保存的item数据量是没有限制的,只要内存足够Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程Memcached设置Item为最大30天的过期时间,设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA为60*60*24*30控制Memcached缺乏认证以及安全管制,应原创 2017-09-09 14:57:30 · 519 阅读 · 0 评论 -
架构师日记——ActiveMQ简介
ActiveMQ是什么ActiveMQ是Apache推出的,一款开源的,完全支持JMS(Java Message Service)1.1和J2EE 1.4规范的JMS Provider实现的消息中间件(Message Oriented Middleware,MOM)ActiveMQ能干什么最主要的功能就是:实现JMS Provider,用来帮助实现高可用、高性能、可伸缩、易用和安全的企业级面向消息服原创 2017-09-26 14:18:25 · 591 阅读 · 0 评论 -
架构师日记——理解Memcached的分布式方式
Memcached尽管是“分布式”的缓存系统,但服务器端并没有分布式功能。各个Memcached不会互相通信以共享信息。那么,怎样进行分布式呢?这完全取决于客户端的实现Memcached的分布式客户端客户端可以通过配置SockIOPool的servers参数保存服务器地址列表,通过weight参数配置每台服务器的权重。SockIOPool提供了连接池的服务,可以通过SockIOPool来配置memc原创 2017-09-01 20:32:17 · 364 阅读 · 0 评论 -
架构师日记——ActiveMQ使用场景和优化建议
ActiveMQ主要有以下几种使用场景异步调用一对多通信做多个系统的集成,同构、异构作为RPC的替代多个应用相互解耦作为事件驱动架构的幕后支撑为了提高系统的可伸缩性ActiveMQ优化可以从以下几个方面ActiveMQ的性能依赖于很多因素,比如: 1:网络拓扑结构,比如:嵌入、主从复制、网络连接 2:transport协议 3:service的质量,比如topic还是queu原创 2017-10-04 15:27:09 · 2199 阅读 · 0 评论 -
架构师日记——基于redis的分布式锁实现
很久之前有讲过并发编程中的锁 并发编程的锁机制:synchronized和lock。在单进程的系统中,当存在多个线程可以同时改变某个变量时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记转载 2018-01-06 13:45:32 · 1766 阅读 · 0 评论 -
架构师日记——MongoDB简介和安装使用
MongoDB是什么MongoDB是一个使用C++编写的、开源的、面向文档的NoSQL(Not Only SQL)数据库,也是当前最热门的NoSql数据库之一。 关系型数据库是面向记录的,在关系型数据库中一个item是一条记录,在非关系型数据库中一个item是一个文档,举个例子 uuid name age 1 u1 zhangsan在NoSQL原创 2017-10-06 22:52:36 · 578 阅读 · 0 评论 -
架构师日记——消息队列技术点梳理(思维导图版)
本文转自neoremind.com。消息队列作为服务/应用之间的通信中间件,可以起到业务耦合、广播消息、保证最终一致性以及错峰流控(克服短板瓶颈)等作用。本文不打算详细深入讲解消息队列,而是体系化的梳理消息队列可能涉及的技术点,起到提纲挈领的作用,构造一个宏观的概念,使用思维导图梳理。 再介绍之前,先简短比较下RPC和消息队列。RPC大多属于请求-应答模式,也包括越来越...转载 2018-03-19 18:38:32 · 1735 阅读 · 0 评论 -
架构师日记——Nginx的Rewrite模块配置
Rewrite模块用来执行URL重定向。这个机制有利于去掉恶意访问的url,也有利于搜索引擎优化(SEO)Nginx使用的语法源于Perl兼容正则表达式(PCRE)库基本语法如下:^:必须以^后的实体开头,如^abc,必须以abc开头$:必须以$前的实体结尾,如abc$,必须以abc结尾.:匹配任意字符[]:匹配执行字符集内的任意字符,如[1-9],可以匹配1到9任何一个[^]:匹配任何不原创 2017-07-28 10:21:09 · 479 阅读 · 0 评论 -
架构师日记——VCL的变量和常用片段
在VCL中,有3个重要的数据结构:1.req:请求目标,当varnish接收到一个请求,这是req object就被创建了,在vcl_recv中的大部分工作,都是在req object上展开的。 2.beresp:后端服务器返回的目标,它包含返回的头信息,在vcl_fetch中的大部分工作都是在beresp onject上开展的。 3.obj:被cache的目标,只读的目标被保存于内存中,obj原创 2017-08-11 21:51:49 · 565 阅读 · 0 评论 -
架构师日记——Varnish简介和安装
Varnish是什么Varnish是一款开源的、高性能的HTTP加速器和反向代理服务器Varnish能干什么最主要的功能就是:通过缓存来实现Web访问加速Varnish特点主要基于内存或者是虚拟内存进行缓存,性能好支持设置精确的缓存时间VCL配置管理比较灵活后端服务器的负载均衡和健康检查局部支持ESIURL地址重写优雅的处理后端服务器宕机的问题32位机器原创 2017-07-30 20:23:49 · 275 阅读 · 0 评论 -
架构师日记——VCL介绍和使用
VCL简介VCL(Varnish Configuration Language):Varnish配置语言,语法简单,功能强大,类似于c,perl。主要用来配置如何处理请求和内容的缓存策略。VCL在执行时会转换成二进制代码VCL文件被分为多个子程序,不同的子程序在不同的时间里执行,比如一个子程序在接到请求时执行,另一个子程序在接收到后端服务器传送的文件时执行基本语法介绍用花括号原创 2017-07-31 16:23:10 · 1230 阅读 · 0 评论 -
架构师日记——Varnish的Grace模式和Saint模式
GRACE模式当几个客户端请求同一个页面的时候,varnish只发送一个请求的后端服务器,然后让那个其他几个请求挂起等待返回结果,返回结果后,复制请求结果发送给客户端。 如果你的服务器每秒有数千万的点击率,那么这个队列是庞大的,没有用户喜欢等待服务器响应,为了解决这个问题,可以指示varnish去保持缓存的对象超过他们的TTL(就是该过期的,先别删除),而且去提供旧内容给正在等待的请求。原创 2017-08-08 07:30:59 · 923 阅读 · 0 评论 -
架构师日记——Varnish的VCL子程序
一个子程序就是一串可读和可用的代码,子程序在VCL中没有参数,也没有返回值。示例如下:sub pipe_if_local{ if(client.ip ~ local){ pipe; }}调用一个子程序,使用子程序的关键字名字,如下所示call pipe_if_local;varnish的工作流程有很多默认子程序和varnish的工作原创 2017-08-09 09:53:07 · 350 阅读 · 0 评论 -
架构师日记——Nginx简介
Nginx是什么Nginx是一款轻量级的Web服务器,也是一款轻量级的反向代理服务器Nginx能干什么直接支持Rails和PHP的程序作为HTTP反向代理服务器作为负载均衡服务器作为邮件代理服务器帮助实现前端动静分离Nginx特点高稳定、高性能、资源占用少、功能丰富、模块化结构、支持热部署等常见的配置文件有如下几个nginx.conf:应用程序的基本配置文件mime.types:MI原创 2017-07-25 04:57:29 · 322 阅读 · 0 评论 -
架构师日记——规划Varnish的缓存大小和提高命中率
给Varnish选择多少内存,是个很艰巨的问题,需要考虑以下事情: 1:应用的热门数据集有多大? 对一个门户或者新闻站来说,这个数据集可能就只是首页和它相关内容的大小。这里包括的两部分,一部分是只首页本身的文字图片内容,另一部分是首页会链接到的页面或象(比如图片),这个很容易理解,首页的内容是最可能被点击的,命中率也会很高。 2:产生一个对象的花费有多大? 有时候,如果从后端返回并不太消耗资原创 2017-08-16 21:25:21 · 1857 阅读 · 0 评论 -
架构师日记——Nginx的HTTP模块配置
Nginx的HTTP配置主要包括三个区块,结构如下:http{//这个是协议界别 include mime.types; default_type application/octet-stream; keepalive_timeout 65; gzip on; server{//这个是服务器级别 listen 80; serve原创 2017-07-25 21:41:39 · 520 阅读 · 0 评论 -
架构师日记——Varnish的性能调优
Varnish的性能调优分成两个部分1.一个是硬件、操作系统和网络部分的优化 2.另外一个,也是最重要的一个,就是VCL的调优。 要进行硬件、操作系统和网络部分的优化,了解Varnish的进程和线程架构是有必要的,他们能帮助你更好的去调整优化,以及整合应用系统。Varnish的进程架构图管理进程(The management process) Varnish主要有两个进程,管理进程和子进程,原创 2017-08-10 11:13:45 · 3345 阅读 · 1 评论 -
架构师日记——Nginx反向代理、动静分离和负载均衡
反向代理反向代理可以理解为客服端和服务端沟通经过一个代理,代理来分发请求 Nginx通常被用作后端服务器的反向代理,这样就可以很方便的实现动静分离,以及负载均衡,从而大大提高服务器的处理能力。常用配置location /{ proxy_pass http://127.0.0.1:8080}或upstream abc.com{ server 127.0.0.1:8080 weigh原创 2017-07-26 08:36:23 · 2201 阅读 · 0 评论 -
架构师日记——Kafka、RabbitMQ、RocketMQ等消息中间件的对比
原文:http://jm.taobao.org/2016/04/01/kafka-vs-rabbitmq-vs-rocketmq-message-send-performance/?utm_source=tuicool&utm_medium=referral 分布式系统中,我们广泛运...转载 2018-05-07 20:16:42 · 6360 阅读 · 2 评论