- 博客(94)
- 资源 (4)
- 收藏
- 关注
原创 进程和线程的区别(超详细)
线程具有许多传统进程所具有的特征,故又称为轻型进程(Light—Weight Process)或进程元;而把传统的进程称为重型进程(Heavy—Weight Process),它相当于只有一个线程的任务。在引入了线程的操作系统中,通常一个进程都有若干个线程,至少包含一个线程。根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位资源开销:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;
2023-06-08 14:54:04 5
原创 MySQL集群架构
综上所述,在我们项目初期数据量小的时候,MySQL可以简单搭建一个主从模式,当随着业务量增长,再逐渐改进为MMM架构、MHA架构等。
2023-03-15 11:09:40 1
原创 Redis 分布式锁的正确实现方式
文章目录前言可靠性代码实现组件依赖加锁代码正确姿势错误示例1错误示例2解锁代码正确姿势错误示例1错误示例2总结前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细介绍如何正确地实现Redis分布式锁。可靠性首先,为了确保分布式锁可用,我们至少要确保锁的实现同
2021-11-20 18:08:18 2 1
原创 一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬
文章目录为什么写这篇文章?复习要点正文1、为什么要使用消息队列?2、使用了消息队列会有什么缺点?3、消息队列如何选型?4、如何保证消息队列是高可用的?5、如何保证消息不被重复消费?6、如何保证消费的可靠性传输?7、如何保证消息的顺序性?总结为什么写这篇文章?博主有两位朋友分别是小A和小B:小A,工作于传统软件行业(某社保局的软件外包公司),每天工作内容就是和产品聊聊需求,改改业务逻辑。再不然就是和运营聊聊天,写几个SQL,生成下报表。又或者接到客服的通知,某某功能故障了,改改数据,然后下班部署上线。
2021-11-20 17:29:10 3
原创 MQ - RabbitMQ - 架构及工作原理
文章目录1.系统架构2.任务分发机制2.1Round-robin dispathching循环分发2.2Message acknowledgment消息确认3.Message durability消息持久化4.Fair dispath 公平分发5.分发到多个Consumer5.1Exchange5.2 Bindings 绑定5.3Direct exchange5.4 Multiple bindings5.5 Topic exchange6.消息序列化7. 工作原理3.2 消息是怎么投递的?(记住一点,生产
2021-11-16 18:40:02 3 1
原创 Elasticsearch 搜索引擎基本介绍
简介ES是一个基于RESTful web接口并且构建在Apache Lucene之上的开源分布式搜索引擎。同时ES还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,能够横向扩展至数以百计的服务器存储以及处理PB级的数据。可以在极短的时间内存储、搜索和分析大量的数据。通常作为具有复杂搜索场景情况下的核心发动机。ES就是为高可用和可扩展而生的。一方面可以通过升级硬件来完成系统扩展,称为垂直或向上扩展(Vertical Scale/Scaling Up)。另一方面,增加更多
2021-11-15 18:03:58 1 1
原创 SkyWalking 全链路追踪工具-使用入门
文章目录前言SkyWalking简介架构入门使用1、下载2、配置探针3、配置参数到需要监控的应用4、配置skyWalking5、启动skyWalking6、查看服务7、sw-web界面不显示数据探针技术1、javaAgent介绍2、javaAgent使用前言随着业务越来越复杂,企业应用也进入了分布式服务的阶段,传统的日志监控等方式无法很好达到跟踪调用,排查问题等需求。这是客套话,我们最常见的痛点便是性能优化,在优化时需要找到有问题的代码,以前介绍过使用Arthas排查问题或查找耗时代码,但是该工具毕竟是
2021-11-12 17:26:44 3342
原创 分布式架构概述及设计
引言随着越来越多的人参与到互联网的浪潮来,曾经的单体应用架构越来越无法满足需求,所以,分布式集群架构出现,也因此,分布式搭建开发成为了Web开发者必掌握的技能之一。那什么是分布式呢?怎么实现分布式以及怎么处理分布式带来的问题呢?本系列文章就来源于对分布式各组件系统的学习总结,包含但不限于Zookeeper、Dubbo、消息队列(ActiveMQ、Kafka、RabbitMQ)、Nosql(Redis、MongoDB)、Niginx、分库分表MyCat、Netty等内容。作为跟大多数人一样的学习使用者,而非
2021-11-12 15:15:35 3
原创 Spring Cloud Hystrix 设计原理
文章目录0. Hystrix是什么?1. Hystrix模型基础2. Hystrix工作原理2.1 创建HystrixCommand 或者HystrixObservableCommand2.2. 执行命令2.3. 返回结果是否被缓存?2.4. 断路器是否打开?2.5. 资源(线程池/队列/信号量)是否已满?2.6. 执行 HystrixObservableCommand.construct() 或者 HystrixCommand.run()2.7. 计算断路器的健康状况2.8. 获取Fallback2.9.
2021-11-11 21:02:42 1
原创 Spring Cloud Ribbon 实现原理
文章目录一、ribbon 负载均衡原理二、核心原理拦截器三、代码的实现过程四、源代码五、ribbon的负载均衡算法六、ribbon 负载算法代码配置一、ribbon 负载均衡原理1.客户端负载均衡,通过LoadBalancerclient来实现,ILoadBalancer 通过配置IRule 和IPin 来实现2.ILoadBalancer 通过每10s 获取一次Eureka 注册地址,获取到注册列表后按照IRule 注册规则进行负载均衡二、核心原理拦截器1.ribbon 的核心其实就是代理,
2021-11-11 20:15:11 1
原创 Spring Cloud Feign 设计原理
文章目录什么是Feign?Feign解决了什么问题?Feign是如何设计的?Feign 的性能怎么样?什么是Feign?Feign 的英文表意为“假装,伪装,变形”, 是一个http请求调用的轻量级框架,可以以Java接口注解的方式调用Http请求,而不用像Java中通过封装HTTP请求报文的方式直接调用。Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数再应用到请求上,进而转化成真正的请求,这种请求相对而言比较直观。Feign被广泛应用在Spring Cloud 的解决方案中
2021-11-08 18:48:20 3
原创 Spring Cloud Eureka 原理解析
文章目录Eureka总体架构组件调用关系服务提供者服务消费者注册中心数据存储结构数据存储层二级缓存层删除二级缓存:加载二级缓存:更新一级缓存:微服务架构中最核心的部分是服务治理,服务治理最基础的组件是注册中心。随着微服务架构的发展,出现了很多微服务架构的解决方案,其中包括我们熟知的Dubbo和Spring Cloud。关于注册中心的解决方案,dubbo支持了Zookeeper、Redis、Multicast和Simple,官方推荐Zookeeper。Spring Cloud支持了Zookeeper、Co
2021-11-05 16:40:13 1
原创 Spring Cloud Gateway 详解和配置使用(文章较长)
spring cloud gateway 介绍1. 网关是怎么演化来的单体应用拆分成多个服务后,对外需要一个统一入口,解耦客户端与内部服务注:图片来自网络2. 网关的基本功能网关核心功能是路由转发,因此不要有耗时操作在网关上处理,让请求快速转发到后端服务上网关还能做统一的熔断、限流、认证、日志监控等注:图片来自网络可以和服务注册中心完美的整合,如:Eureka、Consul、Nacos3.关于Spring Cloud Gateway在SpringCloud微服务体系中
2021-11-05 12:07:16
原创 Spring Cloud 核心组件和底层工作原理
文章目录一、业务场景介绍二、Spring Cloud核心组件:Eureka三、Spring Cloud核心组件:Feign概述毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术。不过大多数讲解还停留在对Spring Cloud功能使用的层面,其底层的很多原理,很多人可能并不知晓。因此本文将通过大量的手绘图,给大家谈谈Spring Cloud微服务架构的底层原理。实际上,Spring Cloud是一个全家桶式的技术栈,包含了很多组件。本文先从其最核心的几个组件入
2021-11-01 16:00:46 3
原创 Java 接口签名(Signature)实现方案
1、前言在为第三方系统提供接口的时候,肯定要考虑接口数据的安全问题,比如数据是否被篡改,数据是否已经过时,数据是否可以重复提交等问题。其中我认为最终要的还是数据是否被篡改。在此分享一下我的关于接口签名的实践方案。如果这种方案不是很好理解,请参考另一篇更简单暴力的方案 java接口签名(Signature)实现方案续 。2、签名流程3、签名规则1、线下分配appid和appsecret,针对不同的调用方分配不同的appid和appsecret2、加入timestamp(时间戳),10分钟内数据有效
2021-10-29 14:12:19 1 1
原创 JWT是什么
文章目录 一、什么是JWT?了解JWT,认知JWT 首先jwt其实是三个英语单词JSON Web Token的缩写。通过全名你可能就有一个基本的认知了。token一般都是用来认证的,比如我们系统中常用的用户登录token可以用来认证该用户是否登录。jwt也是经常作为一种安全的token使用。 JWT的定义: JWT是一种用于双方之间传递安全信息的简洁的、URL安全的表述性声明规范。JWT
2021-10-28 16:27:15 3
原创 docker&k8s入门详解
docker&k8s入门详解 一、Docker1.1 什么是Docker1.2为什么要使用docker?1.更快速的交付和部署2.更高效的虚拟化3.更轻松的迁移和扩展4.更简单的管理5.对比传统虚拟机总结 1.3 基本概念1. 镜像(Image)2.容器(Con...
2021-10-28 11:48:01 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人