- 博客(23)
- 收藏
- 关注
原创 学习笔记—通过nginx对UDP、HTTP、WebSocket做负载均衡
如下为一个包含8080端口的UDP、8081端口的UDP和8080端口的HTTP负载均衡的nginx.conf的示例,在这个配置中,UDP和HTTP(包块还有websocket)流量都配置在一个端口上,但是NGINX可以根据类型正确的分发它们。实现负载均衡前,首先需要实现反向代理,也就是说,请求到某个宇明的时候,该请求默认是被nginx接收到的,然后nginx根据配置,做解析,把特定的请求转发到对应的服务器上去。这样,监听8080端口的UDP流量,就会被分发到三个不同的UDP服务器实例上。
2024-10-20 21:26:32
878
原创 分布式缓存(3)—Redis分片集群
Port就是上面启动时使用的Port,此命令将会创建一个有三个主节点、三个从节点的Redis集群,其中 --cluster-replicas 1 表示每个主节点都会有一个副本节点。spring.redis.cluster.nodes 列出所有Redis集群节点的IP和端口,Spring Boot将会连接这些节点,并通过Redis集群协议获取集群的信息和哈希槽分片。每个节点使用的端口各不相同,可以设置。客户端发出的对于redis的请求,可以访问集群的任意节点,最终,都会被转发到正确的节点中去。
2024-10-20 21:22:38
973
原创 数据库—MySQL的主从备份
在my.cnf文件的[mysqld]模块下有一个server-id配置项,这个配置项便是唯一的ID号,另外,每一个从服务器还需要通过CHANGE MASTER TO语句来配置它要连接的主服务器的ip地址、日志文件名称和该日志里面的位置,这些信息会被储存在主服务器的数据库中。这样一个报错是表示在复制的过程中,从储存库初始化元数据结构的时候出现了问题,可能原因很多,比如存储库中的元数据损坏、复制过程中可能存在网络问题,导致从主服务器获取复制数据失败、主服务器的配置可能存在问题,导致无法正确提供复制数据等等。
2024-10-19 13:29:31
2789
原创 分布式缓存(2)—Redis哨兵
前文中提到了主从备份,但是主从集群如果出现故障怎么恢复呢?哨兵就是一个用于自动故障恢复的机制。Redis哨兵(Sentinel)是Redis的高可用性解决方案,它能够监控Redis主从节点的运行状态,并在主节点发生故障时自动进行故障转移,将其中一个从节点提升为新的主节点,以保证Redis服务的连续性和高可用性。
2024-10-19 13:16:34
1129
原创 分布式缓存(1)—Redis的主从与持久化
如果说网络阻塞了,主节点的offset远远超过从节点了,那么当主节点继续写入数据,offset覆盖了旧的,把slave现在的offset也给覆盖了,那么这个时候,slave就无法通过增量同步了,因为连自己的offset在主节点都找不到了,拿什么新增数据呢?对于主节点来说,判断这个请求的replid是否和自己的一致,如果不一致,说明现在的从节点还不是自己的从节点而是另外一个主节点,因此,需要发送主节点的replid和offset到从节点,让从节点保存下来从而从一个主节点变成一个从节点。
2024-10-19 13:14:16
1912
原创 学习笔记—RPC框架基础及一个简单的造轮子
RPC,全程是Remote Procedure Call,换言之就是远程过程调用。是分布式系统的一种常见的通信方式,已经有许多年的历史了,也算是一种比较古早的技术。RPC是一种进程间通信技术,允许程序调用另一个地址空间(通常是远程服务器上)的函数,就像调用本地函数一样。它隐藏了底层的网络通信细节,使得分布式系统中的各个模块能够像在本地系统中一样进行协作。
2024-10-19 13:10:58
662
原创 学习笔记—文件管理—minio,安装、集群部署及与Springboot结合
做一个简单的总结,Spring Boot 集成 MinIO 的好处在于它提供了一个轻量级、兼容 S3 的对象存储解决方案,支持高可用、分布式存储,以及精细的访问控制。MinIO 是一个高性能的对象存储系统,专为私有云和混合云环境设计,支持存储海量的非结构化数据,如图片、视频、备份、日志文件等。通过将minio和springboot进行集成,有利于实现简便的对象存储操作,一些常见的场景比如多媒体管理的场景、日志和备份管理的场景、文件共享平台等等。此外,在分布式集群中,MinIO 会自动处理数据的分片和复制。
2024-10-17 19:28:57
2177
原创 学习笔记—容器化技术(1)—docker的使用
常见的镜像在DockerHub就能找到,但是对于自己写的项目,需要通过dockerfile来打包镜像。首先,要打包镜像,需要知道镜像的结构。镜像包括应用程序、系统函数库、环境、配置和对应的依赖。在此不详述。构建自定义的镜像时,并不需要一个个文件去拷贝,打包。只需要通过一个file告诉docker,需要哪些基础镜像,拷贝哪些文件,安装什么依赖,启动脚本怎么样,就可以构建镜像,这个file就是dockerfile。// From是指定基础镜像。
2024-10-17 19:23:43
298
原创 学习笔记——在离线环境下安装docker及docker-compose
Unit中,Description: 描述服务的作用,这里是 “Docker Application”,表示这是用于运行 Docker 应用程序的服务。这样的一个服务单元配置文件配置了Docker服务的基本行为,比如启动命令、重启策略、依赖关系等等,使得Docker服务能够被systemd正确地管理和启动。紧接着,首先,给Docker的服务单元文件增加执行权限,让systemd能通过执行这个文件来启动Docker服务。创建docker的systemd服务文件,以docker.service为例子。
2024-10-16 20:39:49
1348
原创 学习笔记—CI/CD—Jenkins
CI/CD(持续集成/持续交付)是一组实践,用于在软件开发过程中自动化代码集成、测试、部署的流程。CI(持续集成)指的是开发人员频繁地将代码集成到共享代码库中,每次集成都会自动运行测试以确保代码的稳定性。CD分为持续交付和持续部署。持续交付是指代码在通过测试后,能够自动准备好部署;持续部署则是指代码在每次变更后会自动部署到生产环境中。
2024-10-16 20:37:36
671
原创 学习笔记—性能测试—分布式Jmeter搭建与使用
然后,Jmeter是基于Java开发的,每创建一个线程或者说一个虚拟用户的时候,JVM就会默认为每个线程分配1M的堆栈内存空间,由于配置限制,Jmeter在一个单机的情况下,是很难实现过高的并发的。随着现在技术的发展,对性能测试的要求是日益提升的,因此,Jmeter的性能测试是极为重要的。通过Jmeter的分布式部署使用,可以达到较高的可扩展性、并能高效利用多台机器的资源进行压力测试,且更接近于实际上的高并发场景,评估会更加全面。进去后,打开index.html,便是当前这个测试的测试报告了。
2024-10-16 20:35:38
1030
原创 学习笔记—微服务—技术栈实践(11)—基于Seata的分布式事务
AT模式是默认的,简单的配置便可以使用,缺点在于,在某些情况下,AT模式对事务的隔离性要求比较高,可能会影响到系统的并发性能,此外,采用AT模式,需要保证底层数据库支持Undo的操作,也就是在回滚的时候可以撤销已经提交了的操作,这对于数据库来说是有一定要求的,主要是适用于关系型数据库而不适用于部分非关系型的数据库。,否则,在不加事务的情况下,可以看到的是,如果账户余额不足,那么成功扣减了库存但是余额没能减去,就会导致库存和订单不匹配,后续的使用上就会出现逻辑或者数据上的混乱,反之亦然。
2024-10-16 20:32:44
944
原创 学习笔记—微服务—技术栈实践(10)—消息中间件
Kafka 是由 LinkedIn 开发并贡献给 Apache 基金会的分布式流处理平台。最初 Kafka 被设计为一种高吞吐量的消息队列,但它现在已经成为一个功能强大的流数据平台,能够处理实时数据流的发布和订阅,以及持久化存储。组件说明Broker消息的存储和转发节点,负责接收、存储和转发消息。Kafka 集群由多个 Broker 组成。Producer消息生产者,向 Broker 发送消息。每个消息都属于一个 Topic。Consumer消息消费者,从 Broker 中读取消息。
2024-10-16 20:28:37
734
原创 学习笔记—微服务—技术栈实践(9)—日志管理
微服务一般处于分布式环境下,在该架构中,每个服务都是独立的,分布在不同的节点或容器中,通过日志管理,可以帮助开发者和运维人员收集分散在不同微服务中的日志数据,通过集中化的工具进行汇总和分析,由此提高整个系统的可观测性。在部署完成后,便可以使用ELK Stack进行日志管理了,在应用中,只需要将日志输出到标准输出即可,logstash会自动将日志收集到Elasticsearch中,并使用Kibana进行可视化展示。Logstash是一个开源的数据收集引擎,可以用于收集、处理和转发日志数据。
2024-10-16 20:26:06
685
原创 学习笔记—微服务—技术栈实践(8)—链路追踪
Zipkin 和 Sleuth 是分布式追踪(Distributed Tracing)技术栈中的两个关键组件,通常用于监控微服务系统中跨服务的请求调用链。它们能够帮助开发者追踪请求在多个微服务中的流转路径,进而分析性能瓶颈和故障。它们的组合在 Spring Cloud 微服务架构中使用广泛。Zipkin 是一个开源的分布式追踪系统,最初由 Twitter 开发。它负责收集、存储、分析和展示分布式系统中的调用链信息。
2024-10-16 20:23:35
646
原创 学习笔记—微服务—技术栈实践(7)——微服务的权限方案
微服务架构记录8——技术栈实践。微服务的权限方案,Spring Security, OAuth2.0, Gateway, JPA, Redis
2024-10-16 20:21:25
1234
原创 学习笔记—微服务—技术栈实践(6)—网关过滤器+Nacos的IP黑白名单限制
GlobalFilter 则是全局过滤器,不需要在配置文件中配置,作用在所有的路由上,最终通过 GatewayFilterAdapter 包装成 GatewayFilterChain 可识别的过滤器,是网关的核心过滤器,作用在每个路由上,不需要配置系统初始化就可以加载。可以看到,其核心方法就是 doFilter 或 filter,那么,当需要实现一个过滤器的时候,便可以从 doFilter 或者 filter 方法下手,进行过滤。前面有提到,如果用较为简洁的语言来阐述网关,几乎就等同于路由转发+过滤器。
2024-10-16 20:18:09
1135
原创 学习笔记—微服务—技术栈实践(5)—网关+Nacos+Sentinel的动态服务容错
服务容错是确保系统在出现故障或异常时仍然能够继续提供服务的能力。它包括对服务的各种保护措施,以提高系统的可靠性和稳定性。通过合理的容错设计,可以避免系统崩溃或性能下降,从而提高用户体验和系统的健壮性。Sentinel 是一个流量控制和熔断降级的开源组件,由阿里巴巴开发。它主要用于服务的容错保护,通过监控系统的流量、响应时间等指标,来实现服务的保护和自动恢复。之所以选用sentinel,是因为之前常用的熔断器早就已经停止维护了。
2024-10-16 20:17:00
535
原创 学习笔记—微服务—技术栈实践(4)—网关+Nacos的动态路由
这样,网关可以根据 Nacos 配置的变化自动刷新路由规则,实现动态路由配置的功能。Spring Gateway的动态路由功能允许根据特定的规则在运行动态配置路由,而无需重新启动应用,比较常见的方式是通过数据库、配置中心或者API来加载或更新路由规则,于此,介绍以下采用配置中心实现动态路由的方式。那么,很显然,靠着网关在配置文件里面配置好的路由路径是比较死板的,动态路由是一个很重要的东西,以此减少对代码的修改。之前已经对网关的简单使用有了一个初步的了解,并且对于配置中心对配置的管理也有了一个简单的了解。
2024-10-16 20:16:07
807
原创 学习笔记—微服务—技术栈实践(3)—微服务之间的相互调用
对于RESTful架构来说,一个核心的概念是资源(Resource),所有的内容都被视为资源,比如用户、订单、文件等等,通常会通过URL来标识,比如/user/1就表示ID是1的用户,/order/12就表示ID为12的订单。尤其是对于一些高并发、大量甚至海量数据的传递来说,是有问题的,OpenFeign进行服务之间的同步调用,而也需要将耗时长量大的消息放入消息队列做异步的处理也是相当重要的,因此,对于消息中间件的详细使用见后文内容。主要用于 Web 服务之间的通信,强调资源的表示、状态转移和无状态通信。
2024-10-16 20:07:47
726
原创 学习笔记—微服务—技术栈实践(2)—网关
网关是一项围绕微服务的重要技术。当微服务多了,端口这些东西自然也就多了,那么也就是说,微服务的入口就多了,这样是相当难以管理的。因此,API网关的出现从某种方面来讲,就是为了解决这个问题。API网关内部封装了系统内部架构,为每个客户端提供了一个定制的API,由此实现成为一个微服务系统的唯一入口。换言之,通过网关,所有的客户端和消费端都需要通过统一的网关来接入微服务系统,在网关层来处理所有非业务相关的东西。比如身份验证、监控、负载均衡、缓存、限流熔断、协议转换等等。
2024-10-16 20:06:15
612
原创 学习笔记—微服务—技术栈实践(1)—注册中心与配置中心
注册中心是Spring Cloud和Spring Cloud Alibaba系列的第一步。服务的注册与发现是最基本的操作。在微服务中,注册中心主要体现为三种角色。首先是服务注册中心,也就是Registry,用于保存服务提供者的注册信息,当服务提供者的节点发生变更的时候,注册中心也会同步的变更,服务消费者在感知到这个变更后,会刷新本地内存中所缓存的服务节点列表。对于一些复杂的环境下,当修改配置后,必须重启服务,否则配置无法生效,这是相当麻烦的,因此,这种省事儿的配置方法是不太好的,最好是能够直接在一个地方修改
2024-10-16 20:03:41
1104
原创 微服务学习笔记——什么是微服务?
首先,要知道什么是微服务,得理解软件架构的演变。总的来说呢,微服务架构现在正在变得更加成熟和普及,虽然随着Kubernetes + Istio的流行,传统的微服务框架如Spring Cloud逐渐被替代,但微服务架构的核心思想仍然存在,并且随着技术的不断进步,微服务架构将会变得更加灵活和高效。而原先的框架如Spring Cloud和Spring Cloud Alibaba,其实也有一定的优势,模块丰富,技术成熟,方案完整,在许多场景下也有相当适用的一面。
2024-10-16 19:54:36
730
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人