分布式服务
文章平均质量分 72
逍遥子_
重点关注大并发处理、分布式计算、微服务、物联网、大数据等领域
展开
-
关于健康吗、核算检测等系统高并发问题的一些思考
针对某地出现的***和*****系统并发访问的性能问题,总结了一下自己的想法,并按照自己的理解设计了一套实现架构,并列出了该架构的部署方式和运维思路。原创 2021-12-29 22:45:06 · 2972 阅读 · 0 评论 -
正向代理和反向代理
正向代理,代理客户端发送请求,例如,我们局域网内的所有主机都不能上网,但是该局域网内有一台双网卡主机A能访问外网,这时可以在双网卡主机A上启动代理服务,在局域网内其他想访问外网的主机上配置代理服务,这样它们就可以上网了;因为这些原本无法访问外网的主机会先将上网请求发送到代理服务器A上,由代理服务A替它们访问相应的外网资源,并将请求到的网络资源返回给请求用户;对于服务端而言,它只能看到代理服务器,并不原创 2016-12-19 17:56:58 · 1035 阅读 · 0 评论 -
优秀REST风格 API的设计原则
本文由逍遥子翻译自:https://codeplanet.io/principles-good-restful-api-design/文中注释由逍遥子根据个人理解填写,转载时请附带本文的连接。设计优秀的REST风格API非常困难!API是服务提供方和使用方之间的契约,打破该契约将会给服务端开发人员招来非常大的麻烦,这些麻烦来自于使用API的开发人员,因为对API的改动会导致他们的移动...翻译 2017-01-10 17:42:27 · 36698 阅读 · 13 评论 -
微服务开发过程中需要注意的若干事项
微服务,说比做容易!我们更关注怎样将这种架构设计思想融入到实际工作中,微服务更关注各服务之间的调用、管理,它追求软件研发过程中的自动化,例如:自动编译、打包、发布,自动化运维等等,这里的每一个自动化的地方都需要有相应的软件、脚本做支撑;在实际应用过程中,我们很难短时间内把所有的自动化基础软件熟练应用起来,一方面,时间紧迫,很难有公司会专门抽出来时间来搭建和构造这样的一套自动化系统出来,并且培训好相原创 2017-02-07 18:42:57 · 5093 阅读 · 0 评论 -
使用LVS实现负载均衡原理及安装配置详解
本文转自:http://www.cnblogs.com/liwei0526vip/p/6370103.html 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群。常用的负载均衡开源软件有nginx、lvs、haproxy,商业的硬件负载均衡设备F5、Netscale。这里主要是学习 LVS 并对其进行了详细的总结记录。一、负载均衡LVS基本介绍 LB集群的架构转载 2017-02-15 08:54:53 · 957 阅读 · 0 评论 -
关于推送系统设计的一些总结与思考(一)
消息与通知本文中的消息是指交给推送系统的待发送字符串;通知是指推送系统内部,通过长连接服务发送给客户端的通知字符串,它只在推送系统内部使用,对于使用推送系统的上层应用无法感知其存在;一、 安全性在推送系统中,安全性最受关注的是长连接的安全管控,以及数据在长连接通道上传输的安全性。举个针对长连接的安全管控的例子:有人知道你的长连接服务的IP地址和端口之后伪造大量的TCP连接,将会对长连接服务器端产生的原创 2016-11-24 19:11:03 · 5461 阅读 · 0 评论 -
CentOS7环境下搭建ElasticSearch
搭建环境在11.12.112.209主机,本文件主要说明搭建一个ES,如果多个es,只有让他们的配置文件中的集群名称cluster.name配置成一样,它们就会自动组成一个集群。一、搭建elasticsearch环境1.先将软件放在:/home/jason/bigdata/目录下,如下:[root@cluster209 bigdata]# pwd/home/jason/bigdat...原创 2017-04-18 17:23:15 · 6170 阅读 · 0 评论 -
悲观锁与乐观锁
悲观锁与乐观锁都是对被修改数据在并发情况下的一种保护机制;这里悲观与乐观的含义是指对于即将修改的数据被外界修改持一种悲或乐的态度;即:悲观锁是指我认为当我要修改一个数据的时候,别人也在修改,所以我要对即将操作的数据进行全程加锁,以保证我的操作不会被别人所影响;乐观锁是指当我要修改数据的时候,别人一般不会再修改,因此,我只在提交我的修改时再加锁,而不用全程加锁。由此可见:悲观锁的加锁时间更长。对于修原创 2017-04-19 12:25:20 · 1147 阅读 · 0 评论 -
大数据平台在分布式服务中的应用
对大数据平台的一些理解大数据是目前比较火的领域,它涉及的领域比较广泛,例如数据挖掘、机器学习等等;所有这些基于数据的操作能够正常工作的前提是:搭建相应的大数据收集平台,在该平台中能够通过主动和被动的方式收集到足够的数据;一般情况下,大数据平台里的数据来源主要有:(1) 日志数据,相对于大数据平台,这是一种主动收集数据的方式;这种方式可能是大数据平台中最主要的数据来源,并且随着用户请求量、服务数量原创 2017-06-27 18:03:22 · 3750 阅读 · 2 评论 -
为系统扩展而采取的一些措施——异步
同步与互斥,提到异步必然要涉及到与之对应的另一个词“同步”,而提到“同步”很多人也会联想到另一个词“互斥”,同步是指多个操作之间产生了依赖或者先后顺序关系,互斥是指多个操作需要访问同一个资源,而这个资源又不能让多个操作同时进行,那么这多个操作之间就是互斥关系;同步调用与异步调用,在服务设计时,同步调用是指调用方在发起调用之后必须一直等待直到调用结果返回才能进行后续的操作,异步调用是指调用发起方在发原创 2016-12-17 17:33:20 · 1567 阅读 · 0 评论 -
关于推送系统设计的一些总结与思考(二)
**三、 消息推送的工作模式** 常见的消息推送系统的工作模式有:推模式、拉模式以及推拉混合模式三种,在很多推送系统中,采用在线消息直接推送下去,离线消息让客户端拉取,这种方式很容易造成漏消息的问题。本节将介绍几种“特殊定义“的推送模式的特点和应用场景,它们的含义与通常理解的略微有些差异。 在线用户:个人认为在线用户是指网络正常、弱网、网络异常等情况下的用户,这些用户实际上正在使用系统,只是由于原创 2016-11-24 19:40:05 · 10076 阅读 · 0 评论 -
关于推送系统设计的一些总结与思考(三)
**四、 推送系统的集群化**4.1长连接集群推送系统作为一项基础服务,它需要承载全部在线用户量,对于移动互联网行业,在设计之初的期望目标用户量就非常大,并且用户未来一段时间的增长量通常难以预估,因此要求在设计推送系统时,都要求能够集群化部署、支持动态扩展。那么长连接集群化设计时需要解决那些问题呢? 个人认为长连接服务需要解决三个问题:路由、管理和动态扩展;另外,如果想要锦上添花,让长连接通道更加原创 2016-11-24 19:43:51 · 3368 阅读 · 0 评论 -
统一资源管理与调度平台(系统)介绍
背景 随着互联网的高速发展,基于数据密集型应用的计算框架不断出现,从支持离线处理的MapReduce,到支持在线处理的Storm,从迭代式计算框架Spark到流式处理框架S4,…,各种框架诞生于不同的公司或者实验室,它们各有所长,各自解决了某一类应用问题。而在大部分互联网公司中,这几种框架可能都会采用,比如对于搜索引擎公司,可能的技术方案如下:网页建索引采用MapReduce框架,自然语言处理/数转载 2015-04-29 15:41:35 · 2849 阅读 · 0 评论 -
如何快速开发一个支持高效、高并发的分布式ID生成器(一)
ID生成器是指能产生不重复ID服务的程序,在后台开发过程中,尤其是分布式服务、微服务程序开发过程中,经常会用到,例如,为用户的每个请求产生一个唯一ID、为每个消息产生一个ID等等,ID生成器也是进行无状态服务开发的重要需求之一。ID生成器有其特殊要求:(1) 产生的ID不能重复,在任何情况下产生的ID都不能重复,例如:在ID生成器程序重启之后,ID生成器产生的新ID不能与重启之前产生原创 2016-04-09 10:30:01 · 5077 阅读 · 4 评论 -
如何快速开发一个支持高效、高并发的分布式ID生成器(二)
前面介绍的是利用redis快速搭建一个ID生成器服务,这种方式搭建的ID生成器服务还存在一些缺陷:(1) 与应用耦合高,没有对外屏蔽掉内部实现细节,例如redis,用户完全不需要知道ID生成器使用什么产生的ID;(2) 扩展性差,在项目规模较大时,ID的应用会非常多,如果用一组redis无法满足需求时,不方面扩展;下面将对上述的ID生成器进一步改进,改进方式为通过thrif原创 2016-04-09 10:36:45 · 2163 阅读 · 1 评论 -
Redis的分片、预分片技术总结
Redis的分片、预分片技术总结Redis的分片(Sharding或者Partitioning)技术是指将数据分散到多个Redis实例中的方法,分片之后,每个redis拥有一部分原数据集的子集。在数据量非常大时,这种技术能够将数据量分散到若干主机的redis实例上,进而减轻单台redis实例的压力。分片技术能够以更易扩展的方式使用多台计算机的存储能力(这里主要指内存的存储能力)和计原创 2014-07-30 17:36:04 · 10366 阅读 · 2 评论 -
搭建Kafka集群环境
计划使用三台主机:11.12.112.206、11.12.112.207、11.12.112.208搭建Kafka集群环境,使用的zookeeper集群为:11.12.112.215:2181,11.12.112.216:2181,11.12.112.217:2181并且zookeeper集群已经启动成功;1.下载压缩包:kafka_2.11-0.8.2.2.tgz并将之放在某个目录下,例如:/h原创 2016-09-09 17:47:46 · 2045 阅读 · 0 评论 -
TCP通信的基本流程
1. 简单的示例伪程序服务端伪代码:// 1. 建立一个监听socket listen_socket = socket(AF_INET, SOCK_STREAM, 0); // 2. 创建一个监听socket绑定的本地地址结构体 serverAddr.sin_family = AF_INET; serverAddr.sin_addr.s_addr = h原创 2016-01-21 11:09:29 · 5825 阅读 · 0 评论 -
确定风险
本文是对《架构即未来》一书第16章的总结; 1. 风险管理是提高和保持可用性及可扩展型的最基本和最重要的方面。 2. 测试是预先发现风险并有效降低风险概率的有效方法,但是任何的测试都无法彻底发现所有的风险点; 3. 在AKF中倾向于把风险看成一个“多元化的产品”,将风险分成两部分: (1)风险发生的概率,它有两部分决定: [1] 本次变更(版本升级)的变更量,即这次改动有多大? [原创 2016-12-14 18:24:16 · 1007 阅读 · 0 评论 -
性能测试、 障碍条件和回滚
第17章 性能测试 1. 性能测试是指把负载和用户需求施加在系统上,以测量其相应时间和稳定性的过程,它是为了验证应用能够满足预期的性能目标;一般需要关注响应时间、吞吐量和资源利用率这三类指标; 2. 性能测试的第一步是建立标准,没有标准的测试是没有意义的; 3. 性能测试的环境应该与研发、QA和准生产等环境分开;之所以要把性能测试环境独立开是因为性能测试需要对整个系统施加压力,如果系统中原创 2016-12-14 20:38:55 · 1111 阅读 · 0 评论 -
The C10K problem
The C10K problem[Help save the best Linux news source on the web -- subscribe to Linux Weekly News!]It's time for web servers to handle ten thousand clients simultaneously, don't you think? After转载 2014-11-14 16:43:54 · 1994 阅读 · 0 评论