![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
互联网技术架构
文章平均质量分 52
嘿哈哈哈
人生就像一场演出,不到谢幕永远不知道自己有多精彩。
展开
-
docker json log 太大导致的 no space left on device
查看空间占用情况du -h --max-depth=1查看 docker 日志占用情况sudo du -d1 -h /var/lib/docker/containers | sort -h解决方案1:删除 docker json log,重启容器解决方案2:docker 容器启动时设置日志的文件个数和单个文件的大小docker run -it --log-opt max-size=10m --log-opt max-file=3 redis解决方案3:全局配置 docker /.原创 2021-11-20 16:30:37 · 918 阅读 · 0 评论 -
Thrift 介绍
Go ThriftDemo GitHubThrift 软件栈如果实现跨语言通信,传输层和协议必须相同,但是跨语言时会出现对应的传输层或协议未实现的情况Thrift软件栈分层从下向上分别为:传输层(Transport Layer)、协议层(Protocol Layer)、处理层(Processor Layer)和服务层(Server Layer)。传输层(Transport Layer):传输层负责直接从网络中读取和写入数据,它定义了具体的网络传输协议;比如说TCP/IP传输等。协议层(P原创 2021-11-18 18:14:33 · 212 阅读 · 0 评论 -
Envoy 是什么,和 Nginx 对比
什么是 Nginx,Nginx 实践以及与 Tomcat,Apache 的比较什么是 EnvoyEnvoy 是一款 CNCF 旗下的开源项目,由 Lyft 开源。Envoy 采用 C++ 实现,是面向 Service Mesh 的高性能网络代理服务。它与应用程序并行运行,通过以平台无关的方式提供通用功能来抽象网络。当基础架构中的所有服务流量都通过 Envoy 网格时,通过一致的可观测性,很容易地查看问题区域,调整整体性能。Envoy 也是 Istio Service Mesh 中默认的 Data P原创 2021-11-18 18:09:19 · 6169 阅读 · 0 评论 -
读多写少:读写锁和无锁双缓存
读写锁读写锁在写操作进行时无法进行读操作,读操作进行时也无法进行写操作,只有读操作可以并发进行。无锁双缓存使用系统调用进行同步的主要问题在于频繁切换上下文耗时较长,而后台系统的处理速度又是除正确性之外最为关键的指标。为提高系统的运行速度,我们可以使用用其他系统资源来换取时间的办法,从而避免使用锁之类系统调用。在这些方法中,最常见的就是用空间换取时间。针对一写多读的情况,可以使用”双 buffer“ 及共享指针机制来实现对同一变量高效访问,同时又能保证不会出现竞争条件。这一实现的技术关键点在于以下两个原创 2021-07-07 11:39:13 · 1381 阅读 · 6 评论 -
读书笔记:《OpenStack 设计与实现》
OpenStack 设计与实现一、初识 OpenStack云计算:IaaS(技术架构即服务):通过互联网向用户提供基础的计算资源,用户能申请到硬件或虚拟硬件,然后安装操作系统或其他应用程序。PaaS(平台即服务):把计算环境、开发环境等平台当作一种服务并通过互联网提供给用户,用户可以安装其他应用程序,但不能修改预先安装好的操作系统和运行环境。SaaS(软件即服务):通过互联网为用户提供软件及应用程序的一种服务方式,用户通过网络以租赁的方式使用,而不是直接购买。OpenStack 是 Ia原创 2020-11-17 13:22:41 · 1082 阅读 · 1 评论 -
大型网站架构常用解决方案
每个大型网站都是由小变大的,在变大的过程中,几乎都需要经历单机架构、集群架构到分布式架构的演变。而伴随着业务系统架构一同演变的,还有各种外围系统和存储系统,比如关系型数据库的分库分表改造、从本地缓存到分布式缓存的过渡等。在业务架构逐渐复杂的同时,保证系统的高性能、高可用、易扩展、可伸缩,使框架能有效地满足业务需要,是一个长远而艰巨的任务。本文介绍了五种相关的技术:分布式服务化架构、大流量的限流和...原创 2019-08-12 16:22:35 · 1676 阅读 · 4 评论 -
互联网技术架构——数据库扩展
要求事务以同步方式持续实时发生是个很难解决的问题。尤其是当跨越两个独立服务器时,来确保水平事务的完整性就非常困难。应用传统方法,用“挂起”概念分别处理事务(事务的每个环节相对于其他环节异步发生),使存在于不同数据库上的事务处理变得比较简单。众所周知的两阶段提交协议:包括提交请求阶段和执行提交阶段组成。在提交请求阶段,进程视图锁定必要的属性,只有锁定成功才能进行执行提交。如果在任何阶段失败,那么整...原创 2018-09-29 23:49:32 · 349 阅读 · 0 评论 -
互联网技术架构——前车之鉴
我们需要观察客户并把每次失败当成一个吸取教训的机会来积极学习,适当地依靠像QA这样的组织,预期系统失败,并针对这些失败做好充分的准备。从失败中学习我们要不断地从错误和成功中学习。观察客户或用A/B测试验证。建立事后分析过程,在低故障率环境下采用假设失败的方法。错误不可避免,但是不能犯同样的错误。如果找不到性能差的查询,结果直到进入生产环境并导致网站中断才发现,那么就必须要找到真正的根本原因...原创 2018-09-29 09:13:24 · 688 阅读 · 0 评论 -
互联网技术架构——拆分数据库
通过克隆和复制的方法扩展数据库和服务,分离功能或服务以及跨存储和应用分拆相似的数据集系统。也即通过将数据复制到只读数据库整合了X轴;通过对Y轴的服务,功能或基于资源拆分,实现额外的基于服务的故障隔离、更大的数据缓存、更快的研发人员吞吐量;通过Z轴的客户拆分降低客户的密度。...原创 2018-09-22 23:14:35 · 630 阅读 · 0 评论 -
互联网技术架构——优化策略
互联技术架构:优化策略——优先级排行榜非常高放宽时间约束利用对象缓存不能回滚注定失败正确使用数据库锁避免选择所有列警惕第三方方案保持竞争力高避免过度设计X轴扩展水平扩展使用商品化系统适当使用数据库慎重使用防火墙利用Ajax缓存独立对象缓存从失败中学习使用QA降低成本从事务处理中清除商务智能禁用分阶段提交慎用Select for Update拒...原创 2018-10-03 22:54:14 · 565 阅读 · 0 评论 -
互联网技术架构——巧妙利用缓存
在浏览器知道云的每一个层次里,通过缓存可以显著提高扩展能力。缓存也有助于减少系统负担,可以使你不必对同一数据一遍又一遍地查找。创建或服务。利用CDN缓存用CDN(内容分发网络)来减少网站的负载。CDN是快速而且简单的平缓高峰流量和一般流量增长的方式。确保进行成本效益分析,同时监控CDN的使用量。CDN是一组计算机,也称为节点或边缘服务器,通过骨干网络连接起来,上面存储着客户数据或内容(图像...原创 2018-09-27 17:37:22 · 842 阅读 · 0 评论 -
互联网技术架构——意犹未尽
对于无法预测的突发性事件,想要正常提供服务并且盈利,其解决方案中有两个重要的变量。首先要以划算的应急容量来处理这些不可预知的事件及其带来的访问量。其次要监控事件,包括CPU利用率、内存、堆大小和网络利用率等,需要看到随时间变化的交易请求以及执行的一阶导数和二阶导数与过去相比较的异常行为,这样就可以在市场开始变化时感知到某些东西失去平衡。警惕第三方方案扩展自己的系统,而不要依赖供应商的解决方案...原创 2018-10-03 22:24:51 · 280 阅读 · 0 评论 -
互联网技术架构——异步通信
当处理速度慢达不到系统容量要求时,多年运行正常的一个小小的同步调用,可以导致整个网站停止服务。应用和服务之间的异步通信一直是许多平台的救星,也是许多平台崩溃的原因。实施的当的异步通信使产品可以近乎无限扩展,但是随意实施的异步通信只会变成隐藏在产品中的故障和瑕疵。这不但要求我们以异步方式通信,而且要求以异步行为进行实际的应用开发。这意味着在很大程度上要远离请求/答复协议——至少是那些对响应有时间...原创 2018-10-03 17:40:32 · 1405 阅读 · 0 评论 -
互联网技术架构——无状态
无状态服务(Stateless Service): 是指该服务运行的实例不会在本地存储需要持久化的数据,并且多个实例对于同一个请求响应的结果是完全一致的。有状态服务(Stateful Service): 是指该服务的实例可以将一部分数据随时进行备份,并且在创建一个新的有状态服务时,可以通过备份恢复这些数据,以达到数据持久化的目的。无状态服务可以有一个或多个实例,因此支持两种服务容量调节模式;有...原创 2018-10-02 15:39:13 · 1503 阅读 · 0 评论 -
互联网技术架构——有备无患
不可能构建出永远不会故障的系统,所以需要考虑对故障隔离和故障控制的需求。下面是几种限制故障影响的方法,减少故障的频率,提高产品的整体可用性。用泳道隔离故障在设计中实现故障隔离区或泳道,需要拆分数据库和服务,并且禁止故障隔离的服务和数据间同步通信或访问。因为泳道把用户或者跨用户共享的功能做了拆分,当出现故障时,可以更快地定位问题来源。实现故障隔离的原则:不共享:泳道不共享服务。但可以接...原创 2018-10-01 23:25:45 · 1120 阅读 · 0 评论 -
互联网技术架构——画龙点睛
避免画蛇添足避免为了确认操作是否有效而读取刚刚写入的数据,如近期处理需要,可把数据存储在本地或分布式缓存。因为与不太可能出现的操作失败所产生的成本相比,确认操作成本更高。而且这类活动与有效扩展相背离。大多数情况下,数据损坏是在实际写入时发现的。读取刚刚写入的数据使系统事倍功半。 一个较好的方案是直接读取正在执行的操作返回数据,并相信它的正确性,从而提高有价值的事务处理量。对数据损坏最稳妥的保...原创 2018-09-26 22:33:51 · 270 阅读 · 0 评论 -
互联网技术架构——合理使用工具
由“工具法则”,“当你只有一个锤子时,任何东西看起来都像是个钉子”。其含义为我们都有一种试图使用自己熟悉的仪器或工具来解决当前问题的倾向。然而在合适的时间,为合适的工作选择合适的工具,在组织的生命周期中至关重要。我们不能只被熟悉的东西困住;应该花点时间学习新事物,并保持开放的心态。适当使用数据库当需要ACID属性来保持数据之间的关系和一致性时。而其他的存储需要考虑更适合的工具,如NoSQL,...原创 2018-09-25 20:51:52 · 353 阅读 · 0 评论 -
互联网技术架构——简化
避免过度的设计过度设计有两大类:一是指产品的设计和实施超过了实际的需求;二是指所完成的产品过于复杂。第一类过度设计有过度使用资源的情况,包括为研发和实施硬件,软件解决方案付出的较高费用。因为过度设计,可能会造成系统的研发周期过长,影响公司产品的发布计划。我们当然希望把系统建设得可以扩展以满足客户的需求,但是我们并不想浪费时间来实施和配置远远超过我们实际需求的系统能力。第二类过度设计是指把一件...原创 2018-09-20 09:32:00 · 683 阅读 · 0 评论 -
互联网技术架构——水平扩展
在实践中,我们发现,“向上扩展注定会失败”。这是因为,在超高速增长的环境里,公司计划以水平方式扩展(又称为向外扩展)至关重要。而大多数的水平扩展都是通过对跨越多个系统工作负荷的拆分或者复制完成的。水平扩展水平扩展是通过复制或拆分服务或数据库而分散事务负载的方法,与此相对的是向上扩展,即通过购买更大的硬件而实现的扩展。向上扩展最终会停在一个点,要么是成本太高,要么是没有更大的硬件。而且四个八...原创 2018-09-25 11:42:41 · 2434 阅读 · 0 评论