
分布式
文章平均质量分 94
还是转转
https://github.com/howely
展开
-
内存回收异常导致OOM的问题
GC异常是在业务基本没流量的凌晨时间发生,且在此期间其他pod均正常运行,不存在是临时高负载或特定场景触发内存峰值。GC异常的pod在重启后正常运行。这种GC异常的现象是偶然的,不可复现的。如果上述任意一个可能的原因导致了GC异常,那么这种情况应该是非偶然的,可持续观测的。由于异常pod很快被重启,没有日志,也没有更完善的监控方式,因此无法进一步分析问题。不排除是云服务商机器本身的硬件异常导致的。原创 2025-03-17 17:46:20 · 747 阅读 · 0 评论 -
Pod的内存使用率很高的问题分析
JVM并不会主动将未使用的内存归还给操作系统。原创 2023-09-25 17:57:30 · 4109 阅读 · 0 评论 -
高并发,你真的理解透彻了吗
高并发确实是一个复杂且系统性的问题,由于篇幅有限,诸如分布式Trace、全链路压测、柔性事务都是要考虑的技术点。另外,如果业务场景不同,高并发的落地方案也会存在差异,但是总体的设计思路和可借鉴的方案基本类似。高并发设计同样要秉承架构设计的3个原则:简单、合适和演进。“过早的优化是万恶之源”,不能脱离业务的实际情况,更不要过度设计,合适的方案就是最完美的。转载 2023-05-29 16:32:05 · 171 阅读 · 0 评论 -
K8S指南-平滑升级与自动扩缩容
Kubernetes默认提供了CPU和内存作为HPA弹性伸缩的指标原创 2023-04-11 15:19:35 · 1096 阅读 · 0 评论 -
k8s指南-Ingress
通常情况下,service和pod仅可在集群内部网络中通过ip地址访问。如果想从集群外部访问集群内部,则必须要有Ingress原创 2022-12-12 16:54:37 · 5814 阅读 · 0 评论 -
k8s指南-Service
在k8s中,Service是一种抽象概念,它定义了一组逻辑pod和访问这些pod的策略。k8s中的service概念和我们通常提到的微服务中的服务是一样的。原创 2022-11-09 18:05:48 · 2716 阅读 · 0 评论 -
k8s指南-工作负载(4)
一个CronJob对象就像是一个Linux环境的crontab文件一样,它会在给定的调度周期(crontab格式)内定期的创建一些job。注意:所有的定时任务的调度周期都依赖于k8s的master节点的时区。通常情况下,CronJob对于创建定期和重复的任务非常有用,比如定期的备份和邮件发送之类的任务场景。当然了,在Kubernetes集群中,Cronjob也有一些局限性和特性。Cronjob控制器当前官方仍然是beta版本,也就意味着还是有一些问题存在的。原创 2022-09-27 16:59:18 · 1583 阅读 · 0 评论 -
k8s指南-工作负载(3)
Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,为声明式配置和自动化带来了巨大便利。它拥有着巨大而快速增长的生态系统,其相关的服务和工具得到了广泛的应用。............原创 2022-08-30 16:43:57 · 772 阅读 · 0 评论 -
k8s指南-工作负载(2)
Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,为声明式配置和自动化带来了巨大便利。它拥有着巨大而快速增长的生态系统,其相关的服务和工具得到了广泛的应用。......原创 2022-07-31 20:51:11 · 1649 阅读 · 0 评论 -
k8s指南-工作负载(1)
Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,为声明式配置和自动化带来了巨大便利。它拥有着巨大而快速增长的生态系统,其相关的服务和工具得到了广泛的应用。.......................................原创 2022-05-31 22:09:40 · 2017 阅读 · 0 评论 -
k8s指南-架构
Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,为声明式配置和自动化带来了巨大便利。它拥有着巨大而快速增长的生态系统,其相关的服务和工具得到了广泛的应用。...........................原创 2022-05-29 10:42:17 · 918 阅读 · 0 评论 -
RPC框架原理与实践
RPC(Remote Process Call)即远程过程调用,这是分布式系统中一个很基础的概念。它是相对于本地调用来说的,指调用非本地的服务器上的方法。RPC基本原理一次RPC调用的过程如下:用文字描述为:服务调用方发送请求到服务提供方,服务提供方根据请求参数执行服务并获得结果,然后将结果返回给服务请求方。在RPC过程中,由于服务提供方一般是以集群形式存在的,因此涉及到路由寻址,负载均衡的问题。请求数据在网络上最终是以二进制的数据进行传输的,因此涉及到序列化的问题。当然,最基本的还有网络通信问原创 2021-05-09 23:05:53 · 638 阅读 · 0 评论 -
垂直搜索
垂直化搜索引擎在分布式系统中是一个非常重要的角色,它既能够满足用户对于全文检索、模糊匹配的需求,解决数据库like查询效率低下的问题,又能够解决分布式环境下,由于采用分库分表,或者使用NoSql数据库,导致无法进行多表关联或者复杂查询的问题。垂直化搜索引擎主要针对企业内部的自有数据的检索。LuceneLucene是Apache旗下的一款高性能、可伸缩的开源的信息检索库。通过Lucene可以十...原创 2020-03-15 17:03:40 · 898 阅读 · 0 评论 -
分布式网站架构读书笔记总结
读书笔记系列关于分布式网站架构的一共有三本书,本次已完成其中两本的整理。大型分布式网站架构设计与实践一书,偏向理论基础,结构层次和组织逻辑很清晰,前两章从总体和重要的基础设施方面介绍了分布式系统架构原理,属于高屋建瓴式的理论描述,涉及的细节较少。随后的几个章节中,安全架构和数据分析可以独立来看,系统稳定性则介绍了如何保证系统上线之后的稳定运行,主要是服务监控,治理和优化相关。大型网站系统与Ja...原创 2018-12-20 17:39:14 · 336 阅读 · 0 评论 -
读书笔记: 大型网站系统与Java中间件实践(6)
6 消息中间件消息中间件是分布式系统基础设施之一。消息中间件使得消息发送者不必同步等待消息接收者的响应,而是将消息发送到消息队列中,由消息消费者来异步消费。这种异步处理模式降低了系统集成的耦合度。–待续。...原创 2018-12-13 20:25:30 · 227 阅读 · 0 评论 -
读书笔记: 大型网站系统与Java中间件实践(5)
5 数据访问层分布式系统中关系型数据库的扩展方式一般是分库分表和读写分离。分库分表会带来一系列问题,如事务处理、分布式sequence、跨表跨库查询等。本章对这几个问题进行了阐述,并从不同角度介绍了数据访问层的设计。最后对读写分离带来的挑战和应对进行了简要描述。5.1 分布式事务事务的支持对业务来说是一个非常重要的特性,数据库软件对单库的ACID事务特性的支持是比较到位的。但是分库之后,同一...原创 2018-11-29 20:43:02 · 255 阅读 · 0 评论 -
读书笔记: 大型网站系统与Java中间件实践(4)
4 服务框架4.1 服务框架简述随着业务的发展,系统从垂直架构演进为服务化架构,这个过程会遇到一些问题。服务框架就是为了解决这些问题的,如下图所示:我们从服务调用者出发,看看服务框架的作用。服务调用者调用服务提供者的接口,由于服务提供者一般是以集群形式存在的,那么就需要进行路由寻址,选定某个服务提供者来处理调用请求,接着需要按照事先约定好的协议进行编码和通信。服务提供者接收到请求之后进行解...原创 2018-11-28 13:50:42 · 198 阅读 · 0 评论 -
读书笔记: 大型网站系统与Java中间件实践(3)
3 构建Java中间件Java中间件是解决特定问题域的一系列组件。本章介绍了很多零散的东西,但都只是大概提了一下,没有深入。如垃圾回收,线程池,线程安全相关的容器和工具等。垃圾回收在JVM内存模型与性能调优中介绍过,线程池和并发容器也介绍过,这里不再重复。线程安全相关内容包括:Sychronized同步关键字,ReentrantLock可重入锁,Volatile的Java内存含义,原子类,...原创 2018-11-20 20:09:11 · 189 阅读 · 0 评论 -
读书笔记: 大型网站系统与Java中间件实践(2)
2 大型网站架构演进大型网站并不是单指访问量大的网站,如某些导航网站访问量很大,但却并不是大型网站。大型网站一般指有海量的数据,高并发的访问量,同时本身的业务和系统的复杂度也较高。2.2 大型网站的架构演进简单的系统,可能仅仅只需要一个服务器,将应用系统和数据库放在同一个服务器上。随着访问量增大,服务器压力上升,需要将应用系统和数据库分离开,分别放在应用服务器和数据库服务器上。当系统进一步发...原创 2018-11-17 17:33:38 · 302 阅读 · 0 评论 -
读书笔记: 大型网站系统与Java中间件实践(1)
1 分布式系统简介本章主要对分布式系统做了一个大概的介绍,重点在于以下两个小节。1.1 线程的执行模式(1) 无需通信的多线程模式线程之间不需要处理共享的数据,也不需要进行动作协调,这是最简单的多线程执行模式。各个线程独立处理自己的工作,不涉及线程安全。(2) 基于共享容器协同的多线程模式在一些场景中多个线程需要对共享数据进行处理,如经典的生产者-消费者模式。Producer生产的产品...原创 2018-11-05 18:38:34 · 333 阅读 · 0 评论 -
读书笔记:大型分布式网站架构设计与实践(5)
5 数据分析随着互联网行业的深入发展,数据的量级呈指数级增长。而数据是非常重要的信息,对数据进行收集和分析是一直在做的事情。当大数据时代来临之后,相应地也产生了一些新的数据收集、分析的工具。5.1 日志收集对于在线运行的系统来说,每天都会产生大量日志信息,需要对这些日志进行收集,分析,并做可视化展示。ELK是elastic公司提供的一套完整的日志收集、展示解决方法,是三个产品的首字母缩写,...原创 2018-10-31 19:28:21 · 280 阅读 · 0 评论 -
读书笔记:大型分布式网站架构设计与实践(4)
系统稳定性系统上线后,可能会发生各种各样的运行问题。如依赖的应用宕机、程序bug、线程死锁、黑客攻击、负载过高等。发生了问题如何快速定位,如何最大程度地保证线上系统的稳定性,都是本章将要探讨的问题。4.1 在线日志分析在线日志分析是出现问题时最常用的问题分析方式。日志中包含了程序在遇到异常情况所打印的堆栈信息。通过异常堆栈可以定位到产生问题的代码行;通过访问IP和请求url参数,排查是否遭到...原创 2018-10-25 11:40:27 · 289 阅读 · 0 评论 -
读书笔记:大型分布式网站架构设计与实践(3)
3 互联网安全架构随着移动物联网的兴起,以及Restful和Web Service等技术的大规模使用,HTTP协议因其使用方便以跨平台的特性,在Web开发和SOA领域得到了广泛应用,但其所涵盖的信息,大都是未经加密的明文,信息获取门槛的降低,也为应用架构的安全性与稳定性带来了挑战。本章一共分为六个小节,分别介绍了常见的Web攻击手段,常用的安全算法,摘要认证,签名认证,Https协议和OAut...原创 2018-10-12 15:52:08 · 264 阅读 · 0 评论 -
读书笔记:大型分布式网站架构设计与实践(2)
2 分布式系统基础设施一个大型、成熟的分布式系统的背后,往往会涉及众多的支撑系统,也即所谓的分布式系统的基础设施,如第一章介绍过的分布式协作及配置管理系统Zookeeper,还有本章将要介绍的分布式缓存系统、持久化存储系统、分布式消息系统、搜索引擎,另外还有CDN系统、负载均衡系统、运维自动化系统等等。本章一共分为四个小节,分别介绍了分布式缓存,持久化存储,分布式消息系统和垂直化搜索引擎。2...原创 2018-09-30 18:50:39 · 557 阅读 · 0 评论 -
Hystrix-介绍与使用(下)
上篇中对hystrix的隔离和熔断作了基本的介绍,本文将说明Hystrix在项目中的实际使用。在开发中很多时候需要调用第三方接口或依赖,而第三方接口或依赖的响应时间是无法被调用方控制的。如果调用方发出大量的请求而长时间无响应,很可能会导致大量线程资源在阻塞中,拖垮服务器的性能。因此在调用第三方接口或依赖时使用hystrix进行隔离和熔断是有必要的。注解使用最常用的方式就是通过Hystrix注...原创 2018-09-29 16:28:48 · 2052 阅读 · 1 评论 -
Hystrix-介绍与使用(上)
在博主另一篇文章-“SpringCloud基础(2)”中简单介绍过Hystrix在SpringCloud中的作用。实际上Hystrix是Netflix的分布式套件之一,该框架目标在于通过控制那些访问远程系统、服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。Hystrix具备拥有回退机制和断路器功能的线程和信号隔离,请求缓存和请求打包,以及监控和配置等功能,即使不使用SpringClou...原创 2018-09-26 21:22:03 · 4723 阅读 · 0 评论 -
读书笔记:大型分布式网站架构设计与实践(1)
原计划花一年半时间看完十二本书,目录如下:(1)大型分布式网站架构设计与实践(陈康贤,电子工业出版社) (2)大型网站系统与Java中间件实践(曾宪杰,电子工业出版社) (3)Java并发编程实战(童云兰等译,机械工业出版社) (4)Java并发编程的艺术(方腾飞,机械工业出版社) (5)深入理解Java虚拟机(机械工业出版社) (6)Effective Java中文版(机械工业出版...原创 2018-09-14 17:02:34 · 422 阅读 · 0 评论 -
Kafka简介
Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。它是一个分布式、支持分区的的、多副本,基于zookeeper协调的分布式消息系统。它的最大特性是可以实时的处理大量数据以满足各种需求场景:比如基于Hadoop的批处理系统、低延时的实时系统、storm/Spark流式处理引擎,web/ngix日志,访问日志,消息服务等等。最初由Linkedin公司开发,于20...原创 2018-06-26 22:29:05 · 685 阅读 · 0 评论 -
线程池处理高并发请求
背景:本系统会在每个月特定时间接收上游系统发起的大量请求并进行处理,并将处理结果通过主动回调或提供查询接口的方式反馈给上游系统。原创 2018-06-01 18:35:54 · 8248 阅读 · 1 评论 -
SpringCloud基础(5)
8 Zuul处理Cookie和重定向在实际项目中,将Spring Cloud Zuul作为API网关接入时,经常会碰到下面两个常见的问题: 会话无法保持 重定向后的HOST错误8.1 会话保持问题通过跟踪一个HTTP请求经过Zuul到具体服务,再到返回结果的全过程。可以发现在传递的过程中,HTTP请求头信息中的Cookie和Authorization都没有被正确传递给具体服务,所以最终导致会话状原创 2017-09-29 19:21:49 · 597 阅读 · 0 评论 -
SpringCloud基础(4)
6 服务注册中心Consul前文中介绍了Spring Cloud的核心组件,包括服务注册与发现组件Eureka,熔断器Hystrix,配置中心Spring Cloud Config和服务网关Zuul。在前文的基础上进行工作。先将Spring Cloud的版本进行升级:将pom.xml中的parent模块版本升级为1.5.4.RELEASE,同时将spring-cloud-dependencies组件原创 2017-09-21 18:50:19 · 361 阅读 · 0 评论 -
SpringCloud基础(3)
4 消息总线在前面的配置中心篇中讲到过,可以通过消息总线刷新配置的更新。Spring Cloud Bus除了支持RabbitMQ的自动化配置之外,还支持现在被广泛应用的Kafka。下面将通过Kafka实现消息总线的功能。4.1 Kafka简介Kafka是一个由LinkedIn开发的分布式消息系统,于2011年初开源,现由Apache维护和开发。Kafka使用Scala实现,被用作LinedIn的活动原创 2017-09-21 13:47:36 · 622 阅读 · 0 评论 -
SpringCloud基础(2)
参考: http://blog.didispace.com/springcloud3/,http://blog.didispace.com/springcloud4/,http://blog.didispace.com/springcloud7/2 断路器在微服务架构中,存在着多个微服务,彼此之间可能存在依赖关系,当某个单元出现故障或者网络不通时,就会因为依赖关系形成故障蔓延,最终导致整个系统的瘫原创 2017-09-18 19:21:42 · 758 阅读 · 0 评论 -
SpringCloud基础(0)
Spring Cloud是一系列框架的有序集合,是一个分布式系统基础设施的解决方案。利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。原创 2017-09-13 10:56:06 · 376 阅读 · 0 评论 -
SpringCloud基础(1)
1 服务注册中心、提供者和消费者 1.1创建服务注册中心。 创建一个maven工程,在pom.xml中引入依赖的内容:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.原创 2017-09-12 18:57:15 · 366 阅读 · 0 评论 -
SpringBoot基础(2)
10.数据源Jdbc连接数据库 在pom中添加依赖: mysql mysql-connector-java o原创 2017-08-31 16:09:53 · 341 阅读 · 1 评论 -
SpringBoot基础(1)
说明:本文参考http://blog.csdn.net/catoop/article/details/50501664/,在此基础上进行验证与总结。1. hello world相当简单,pom.xml文件中配置: org.springframework.boot spring-boot-starter-pa原创 2017-08-25 18:17:57 · 632 阅读 · 1 评论 -
分布式锁实现方式
在分布式系统中,数据的一致性是个重要的问题,为了实现数据一致性,需要很多技术方案来支持,比如分布式锁等。分布式锁又有多种实现方式,如数据库锁,redis分布式锁,还有zookeeper分布式锁。 这里介绍一下redis分布式锁的实现,直接看代码。/** * 获取分布式锁 * * @param lockName 竞争获取锁key * @param acqui............原创 2017-07-20 15:27:22 · 473 阅读 · 0 评论 -
分布式编程初体验
单机环境下伪分布式集群环境搭建请参考:http://blog.csdn.net/xiaoyi52/article/details/43528563。 本文将介绍第一个hadoop程序具体怎么运行。 运行环境为ubuntu14.04+eclipse+hadoop2.2.0。 本文运行第一个程序出自参考资料1,部分细节根据实际情况修改,说明如下: 1.hadoo...原创 2015-04-26 01:23:01 · 309 阅读 · 0 评论 -
hadoop完全分布式集群安装
注:本文来自于转载,经过验证,确实可行。转载请注明来自:http://blog.csdn.net/ab198604/article/details/8250461要想深入的学习hadoop数据分析技术,首要的任务是必须要将hadoop集群环境搭建起来,可以将hadoop简化地想象成一个小软件,通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个hadoop分布式集群了转载 2015-02-07 17:19:40 · 447 阅读 · 0 评论