架构
文章平均质量分 88
anssummer
只求每天进步一点点.
展开
-
图解浏览器的基本工作原理
当有 Service Worker 被注册时,其作用域会被保存,当有导航时,network thread 会在注册过的 Service Worker 的作用域中检查相关域名,如果存在对应的 Service worker,UI thread 会找到一个 renderer process 来处理相关代码,Service Worker 可能会从 cache 中加载数据,从而终止对网络的请求,也可能从网上请求新的数据。很多应用都会采用这样的设计,如果一个工作进程反应迟钝,重启这个进程不会影响应用其它进程的工作。转载 2023-05-14 20:37:26 · 346 阅读 · 0 评论 -
长链接概念
长链接原创 2022-07-31 23:47:54 · 565 阅读 · 0 评论 -
架构设计摘录
集群模式(Cassandra,HBase等等)的一个好处就是没有SPOF(SinglePointofFailure),这可以保证服务的高可用,而且,数据在节点上的分布、迁移都是自动完成的,对用户透明。但是,集群中的各个节点之间互相通信,需要复杂的协议来维持数据在各节点的一致性,这种复杂度带来的是各种失败模式(FailureModes),特别是当这种技术还不成熟、没有经过广泛验证的时候,故障是难以预料的。这样做的好处是,在渲染一个用户页面的时候,所有数据可以在同一个库中查询到,大大减少了查询延迟。...原创 2022-07-18 00:07:58 · 262 阅读 · 0 评论 -
Redis应用场景举例
面对越来越多的高并发场景,限流显示的尤为重要。限流 当然,限流有许多种实现的方式,Redis具有很强大的功能,我用Redis实践了三种的实现方式,可以较为简单的实现其方式。Redis不仅仅是可以做限流,还可以做数据统计,附近的人等功能,这些可能会后续写到。第一种:基于Redis的setnx的操作 我们在使用Redis的分布式锁的时候,大家都知道是依靠了setnx的指令,在CAS(Compare and swap)的操作的时候,同时给指定的key设置了过期实践(expire...原创 2021-10-08 00:04:00 · 764 阅读 · 0 评论 -
精简包走天下
上个月(7/25),Facebook 宣布其社交平台取得新的里程碑成就:月活跃用户数量达到 20 亿,从 10 亿到 20 亿,仅过去了 5 年的时间。能与 20 亿人一同踏上这一旅程我们感到非常荣幸。(我们应该也是这 20 亿人中的一份子)业界科技媒体给出了这样的评论,解释平台用户数量快速增长的原因:近几年,Facebook 针对低带宽或者网络环境并不理想的地区,专门开发了精简版的应用,已经从亚洲和其他地区收获了 7.46 亿的新用户数量。在这新增长的 10 亿用户中,印度是 Facebo原创 2021-08-25 00:57:36 · 306 阅读 · 0 评论 -
了解用户认证服务
LDAPOAUTH2.0OAuth 2.0 的标准是RFC 6749文件。该文件先解释了 OAuth 是什么。OAuth 2.0 规定了四种获得令牌的流程。你可以选择最适合自己的那一种,向第三方应用颁发令牌。下面就是这四种授权方式。授权码(authorization-code) 隐藏式(implicit) 密码式(password): 客户端凭证(client credentials)第一种授权方式:授权码授权码(authorization code..原创 2021-08-24 00:38:55 · 338 阅读 · 0 评论 -
搞定跨域:jsonp和cors
1.跨域问题的由来何谓同源:URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口相同,则表示它们同源。浏览器的同源策略,从一个域上加载的脚本不允许访问另外一个域的文档属性,是浏览器上为安全性考虑实施的非常重要的安全策略。举个例子:比如一个恶意网站的页面通过iframe嵌入了银行的登录页面,如果没有同源限制,恶意网页上的javascript脚本就可以在用户登录银行的时候获取用户名和密码。2.跨域的影响范围在浏览器中,<script>、<img>、<.原创 2021-08-22 20:47:09 · 388 阅读 · 0 评论 -
基于Flink和规则引擎的实时风控解决方案
对一个互联网产品来说,典型的风控场景包括:注册风控、登陆风控、交易风控、活动风控等,而风控的最佳效果是防患于未然,所以事前事中和事后三种实现方案中,又以事前预警和事中控制最好。这要求风控系统一定要有实时性。本文就介绍一种实时风控解决方案。1.总体架构风控是业务场景的产物,风控系统直接服务于业务系统,与之相关的还有惩罚系统和分析系统,各系统关系与角色如下:业务系统,通常是APP+后台 或者 web,是互联网业务的载体,风险从业务系统触发; 风控系统,为业务系统提供支持,根据业务系统传转载 2020-10-16 17:21:45 · 1147 阅读 · 0 评论 -
什么是乐观锁,什么是悲观锁
一、并发控制当程序中可能出现并发的情况时,就需要通过一定的手段来保证在并发情况下数据的准确性,通过这种手段保证了当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这种手段就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。常说的并发控制,一般都和数据库管理系统(DBMS)有关。在 DBMS 中的并发控制的任务,是确保在多个事务同时存取数据库中同一数据时,不破坏事务的隔离.转载 2020-09-25 11:20:53 · 567 阅读 · 0 评论 -
golang channel详解
channel内部原理数据结构type hchan struct {qcount uint // 所有在队列中数据数量dataqsiz uint // 环形队列大小,可以存放的元素个数buf unsafe.Pointer // 只想环形队列的指针elemsize uint16closed uint32elemtype *_type // element typesendx uint // 生产下标recvx原创 2020-09-10 17:34:31 · 534 阅读 · 0 评论 -
golang中sync.Map并发创建、读取问题实战记录
背景:我们有一个用go做的项目,其中用到了zmq4进行通信,一个简单的rpc过程,早期远端是使用一个map去做ip和具体socket的映射。问题大概是这样 1 2 3 4 struct SocketMap { sync.Mutex sockets map[string]*zmq4.Socket } ...原创 2020-03-13 00:13:38 · 288 阅读 · 0 评论 -
一致性哈希算法(Consistent Hashing)
一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。分布式缓存问题假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大,之前直接读写数据库的方式不太给力了,于是我原创 2013-10-03 10:03:28 · 1073 阅读 · 0 评论 -
DRBD+Heartbeat
DRBD简介 Distributed Replicated Block Device(DRBD)是一个用软件实现的、无共享的、服务器之间镜像块设备内容的存储复制解决方案。 数据镜像:实时、透明、同步(所有服务器都成功后返回)、异步(本地服务器成功后返回) DBRD的核心功能通过Linux的内核实现,最接近系统的IO栈,但它不能神奇地添加上层的功能比如检转载 2013-09-29 00:07:15 · 1094 阅读 · 0 评论 -
Gearman 介绍
Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相 比,Gearman更偏向于任务分发功能。它的任务分布非常简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片 resize功能,由于图片resize需要消耗大量计算资源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。通常,多语言多系统之间的集成是个大问题原创 2013-10-07 11:32:41 · 1003 阅读 · 0 评论 -
如何让快递更"快"?菜鸟自研定时任务调度引擎首次公开
参考:http://elasticjob.io/docs/elastic-job-lite/00-overview/在中国物流快速发展的今天,日均包裹量已经突破1亿,如何确保1亿包裹在合理的时间之内送达收件人,并且能够在收件人反馈之前,及时处理那些没有在合理时间内运输的包裹,从而提高物流整个链路的时效体验,已经成为亟待解决的关键问题。要想解决问题,首先要发现问题!有效、及时地...转载 2019-11-25 20:43:58 · 192 阅读 · 0 评论 -
一致性算法 - Raft
一致性算法 - RaftRaft 状态一个 Raft 集群包含若干个服务器节点;通常是 5 个,这允许整个系统容忍 2 个节点的失效,每个节点处于以下三种状态之一:follower(跟随者):所有结点都以follower的状态开始。如果没收到leader消息则会变成candidate状态。 candidate(候选人):会向其他结点“拉选票”,如果得到大部分的票则成为lea...原创 2019-11-17 22:08:27 · 192 阅读 · 0 评论 -
平滑重启原理-USR1 USR2信号量使用
在POSIX兼容的平台上,SIGUSR1和SIGUSR2是发送给一个进程的信号,它表示了用户定义的情况。nginx常用信号量如下: TERM, INT Quick shutdown QUIT Graceful shutdown优雅的关闭进程,即等请求结束后再关闭 HUP Conf...原创 2019-11-17 10:23:42 · 5404 阅读 · 2 评论 -
白话RPC和HTTP区别
随着企业 IT 服务的不断发展,单台服务器逐渐无法承受用户日益增长的请求压力时,就需要多台服务器联合起来构成「服务集群」共同对外提供服务。同时业务服务会随着产品需求的增多越来越肿,架构上必须进行服务拆分,一个完整的大型服务会被打散成很多很多独立的小服务,每个小服务会由独立的进程去管理来对外提供服务,这就是「微服务」。当用户的请求到来时,我们需要将用户的请求分散到多个服务去各自处理,然后又需要将...原创 2019-11-10 23:37:54 · 326 阅读 · 0 评论 -
什么是gRPC
HTTP/2是什么在正式讨论gRPC为什么选择HTTP/2之前,我们先来简单了解下HTTP/2。HTTP/2可以简单用一个图片来介绍:来自:https://hpbn.co可以看到:HTTP/1里的header对应HTTP/2里的 HEADERS frameHTTP/1里的payload对应HTTP/2里的 DATA frame目前很多网站都已经跑在HTTP/2上了,包括...原创 2019-11-10 23:36:46 · 375 阅读 · 0 评论 -
apache中配置php支持模块模式、cgi模式和fastcgi模式的实验
首先安装apache、mysql和php,依次顺序安装。 1.apache、mysql的安装比较简单,略过 2. php的安装,我安装的是php5.3.6内置了php-fpm,所以不需要再单独下补丁了。./configure –prefix=/usr/local/php5 /--with-mysql=/usr/local/mysql /--enabl原创 2013-09-21 18:45:54 · 1341 阅读 · 0 评论 -
https:自行办法浏览器证书
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表转载 2013-10-07 09:55:27 · 3016 阅读 · 0 评论 -
上传进度实现的2中方式
1.用apc实现这是一个完整可用的代码,部分代码来自于网络。 PHP:5.26使用步骤:开启APC.extension=php_apc.dllapc.rfc1867 = On 代码:[php] view plaincopy//X_REQUESTED_WITH /* 上传文件 */ if(原创 2013-10-06 22:19:44 · 1517 阅读 · 0 评论 -
http 协议上传文件与 rfc1867
在最初的 http 协议中,没有上传文件方面的功能。 rfc1867 ( http://www.ietf.org/rfc/rfc1867.txt )为 http 协议添加了这个功能。客户端的浏览器,如 Microsoft IE, Mozila, Opera 等,按照此规范将用户指定的文件发送到服务器。服务器端的网页程序,如 php, asp, jsp 等,可以按照此规范,解析出用户发送来的文件原创 2013-10-06 21:58:59 · 3228 阅读 · 0 评论 -
Redis监控方案
Redis现在在业务中应用已经很广泛了,但是如何监控redis,实时的观察redis的性能,却很少的提及,现在常见的监控方案基本上都是使用redis自带的info命令和monitor命令获取相关信息,然后提取出来显示。测试环境: redis版本:2.4.17 IP:10.20.111.1881 redis-faina 一个使用re原创 2014-06-07 17:17:40 · 1020 阅读 · 0 评论 -
memcache相关基础
以1.2.2版本的协议为例:数据分为两种,命令行数据和自由数据。命令行数据以\r\n结尾,自由数据也以\r\n结尾,但由于自由数据中会允许包含\r,\n这种字符,所以在获取自由数据时,应以自由数据的length为标准。(这点和html协议有点类似)key是一个字符串,长度不能超过250个,键值中不能使用制表符和其他空白字符(例如空格,换行等)。存储命令有set,add,replace。获取原创 2014-06-08 12:12:21 · 617 阅读 · 0 评论 -
mcq 轻量级的消息队列
堵了?那就绕行.持久化消息队列memcacheq(简称mcq)是一个轻量级的消息队列。mcq依赖于Berkeley DB和libevent。Berkeley DB用于持久化存储队列的数据,避免在mcq崩溃或这服务器当掉时候,不至于数据丢失。特性:1.damn simple (简单易用)2.very fast (处理速度快)3.multiple queue (多条队列)原创 2014-03-13 11:31:08 · 1365 阅读 · 0 评论 -
页面静态化
PHP生成静态HTML页面的方法1. 利用PHP模板生成静态页面2.使用PHP文件读写功能生成静态页面3.使用PHP输出控制函数(Output Control)生成静态页面原创 2013-10-07 20:19:06 · 808 阅读 · 0 评论 -
某大型网站图片服务器改造方案
1、目前网站图片服务器结构如下:2、现有结构说明2.1 mount目录说明所有前端web服务器都通过nfs挂载3台图片服务器export出来的目录,以接收web服务器PHP进程写入的图片。然后image1挂载另外两台图片服务器的export目录到本地给nginx对外提供访问。2.2 用户上传图片说明用户通过Internet访问页面提交上传请求post到web服务器,web服转载 2013-10-07 18:05:46 · 895 阅读 · 0 评论