Java
未读
Ribbon
这是一篇关于Ribbon负载均衡的文章。文章首先介绍了Ribbon的基本功能,作为Netflix开源的客户端负载均衡组件,它支持连接超时、重试等配置,并基于规则(如轮询、随机等)进行服务调用。在Spring Cloud中,Ribbon通过从Eureka获取服务提供者列表,使用内置负载均衡算法进行请求服务。文章还解释了Ribbon与Nginx的区别,指出Nginx为服务器端负载均衡,而Ribbon为客户端负载均衡,后者的负载均衡算法由调用者维护。此外,文章列出了Ribbon内置的负载均衡策略,如轮询、随机和最佳可用策略,并提供了修改负载均衡策略的配置方法。最后,文章介绍了Ribbon的重试机制,通过引入Spring Retry依赖和相关配置,解决集群服务出现问题时的服务调用失败问题。
运维
未读
Docker 安装MongoDB
这是一篇关于在Docker中部署MongoDB的文章。文章首先介绍了查找并拉取MongoDB镜像的方法,接着创建了挂载目录并设置了相关权限。然后,提供了一个MongoDB配置文件mongodb.conf,包括日志、存储和网络配置,并介绍了如何通过docker run命令启动MongoDB容器,指定端口映射和挂载目录。此外,文章展示了如何在容器内创建MongoDB管理员账户,通过mongosh连接并配置用户权限,包括常见的权限如readWriteAnyDatabase和userAdminAnyDatabase。最后,文章还讲解了如何使用db.auth命令进行账户校验。
Java
未读
Feign
这是一篇关于Feign在微服务中的集成与使用的文章。文章首先介绍了微服务架构中的服务调用框架,特别是Feign的作用与特点。Feign是一种声明式Web Service客户端,通过简单的接口和注解即可实现HTTP请求的远程调用,支持Hystrix容错、Ribbon负载均衡等功能。接着,文章讲解了Feign的工作原理,包括如何通过@EnableFeignClients和@FeignClient注解开启Feign服务,并详细说明了Feign接口的配置项。随后,文章展示了如何在项目中集成Feign,包括添加依赖、创建服务接口、实现降级逻辑及创建消费者控制器。最后,通过访问测试URL,验证了Feign集成的成功。
Java
未读
Skywalking
这是一篇关于链路追踪与SkyWalking的使用的文章。文章介绍了随着微服务系统复杂化,分布式链路追踪的重要性。链路追踪通过还原请求的调用链,帮助开发者快速定位问题,提升性能诊断效率。SkyWalking作为一种分布式链路追踪和应用性能管理工具,提供了多语言支持、服务网格遥测分析、性能监控等功能,具有轻量、高效和可视化的优点。文章详细描述了SkyWalking的特点,包括自动探针、模块化架构和警告功能,并提供了安装和配置SkyWalking的步骤。最后,通过配置VM参数并访问面板,用户可以实现链路追踪,查看服务调用链路。
Java
未读
Hystrix
这是一篇关于Hystrix的背景与使用的文章。文章介绍了在分布式系统中,服务间的依赖可能导致"服务雪崩",即一个服务故障可能引发其他服务连锁失败。为了应对这种情况,Hystrix提供了熔断机制来防止故障蔓延,保护系统稳定性。文中通过两个场景假设,分别介绍了如何使用Hystrix进行服务降级和服务熔断。首先,服务提供方通过@HystrixCommand注解实现降级逻辑;其次,消费方通过Feign与Hystrix集成,实现服务熔断。文章还详细讲解了Hystrix的设计目标、遵循的原则以及如何通过命令模式、线程池和熔断器来实现服务保护。最后,介绍了Hystrix的执行命令方法,如execute()、queue()、observe()和toObservable(),以及它们的应用场景。
运维
未读
Docker 安装RabbitMQ
这是一篇关于RabbitMQ容器部署和管理的文章,介绍了如何使用Docker拉取并运行RabbitMQ镜像,包括创建挂载目录、配置端口映射、设置默认用户名和密码、启动容器等步骤。文章还涵盖了如何启用RabbitMQ的管理控制台插件和Prometheus插件,查看容器状态及日志,访问管理界面,并指导如何在RabbitMQ中添加新用户、授予权限及角色。
运维
未读
Docker 安装Jenkins
这是一篇关于使用Docker部署Jenkins的文章,介绍了如何查找、拉取Jenkins镜像并创建挂载目录。文章详细说明了构建Jenkins容器的步骤,包括设置端口映射、挂载数据卷以及自启配置。同时,还讲解了如何查看容器状态、设置容器开机自启、访问Jenkins页面并获取初始密码,以及如何通过Jenkins界面安装推荐插件。
运维
未读
Docker 安装Nginx
这是一篇关于使用Docker部署Nginx的文章,介绍了如何查找、拉取官方Nginx镜像,并配置相应的目录和配置文件。文章详细说明了如何编写nginx.conf配置文件,包括设置日志、端口、文件传输、客户端超时等参数。接着,介绍了如何使用docker run命令启动Nginx容器并进行端口映射、挂载文件等配置。最后,还提到了如何设置容器自启动、启动、停止和重启容器,以及如何通过浏览器验证Nginx服务的运行。
运维
未读
Docker 安装Redis
这是一篇关于使用Docker部署Redis的文章,介绍了如何在Docker中查找、拉取官方Redis镜像,并配置本地文件挂载以持久化数据。文章详细描述了如何创建本地文件夹、下载并修改redis.conf配置文件,设置守护进程、远程访问、数据持久化及连接密码等。接着,讲解了使用docker run命令启动Redis容器,映射端口、挂载配置和数据目录,并启用数据持久化。还介绍了如何设置容器自启动、查看容器运行状态和日志、以及使用redis-cli进行连接测试。
Java
未读
Zookeeper、Eureka、Consul、Nacos
这是一篇关于注册中心及其组件对比的文章,介绍了注册中心在分布式系统和微服务架构中的重要性,以及其基本流程和核心功能,包括服务发现、服务记录和动态管理服务。文章重点对比了几种常用的注册中心组件:Zookeeper、Eureka、Consul和Nacos。Zookeeper是传统的服务注册中心,适用于RPC框架,但逐渐被其他组件取代。Eureka是SpringCloud的服务发现框架,但已停止维护。Consul提供高可用性、健康检查和多数据中心支持,适合大规模分布式系统。Nacos则是一个更现代的、功能全面的服务发现与配置管理平台,支持微服务和RPC框架,具备良好的社区支持和文档。最后,作者推荐在微服务架构中使用Nacos,因其通用性、稳定性和文档支持。
运维
未读
Docker 安装MySQL
这是一篇关于在Docker中部署MySQL的文章,介绍了如何查找、拉取并配置MySQL镜像,并通过挂载方式持久化数据和配置文件。文章首先讲解了如何拉取MySQL镜像、查看镜像并获取配置文件的位置,随后详细描述了如何在宿主机上创建挂载路径并复制MySQL配置文件。接着,作者展示了如何使用命令启动MySQL容器并配置容器的重启策略。文中还说明了如何进入MySQL容器设置用户信息、创建新用户、授予权限以及解决时区问题。最后,文章提供了启动、停止、重启容器以及设置容器开机自启动的命令。
Java
未读
Spring Cloud断路器
这是一篇关于在微服务架构中使用断路器模式的文章,介绍了断路器模式的背景和作用,特别是在高并发和服务依赖的情况下如何防止故障蔓延。文章首先通过电商系统举例说明了依赖服务失败可能导致的服务瘫痪,并引出了断路器模式的必要性。然后,介绍了Netflix的Hystrix框架及其在Spring Cloud中的使用,包括如何在Ribbon和Feign中启用Hystrix来实现服务故障时的回退机制。文中详细描述了如何通过配置和代码实现断路器功能,并演示了服务不可用时如何返回回退数据。
Java
未读
Spring Cloud服务消费者
这是一篇关于服务消费者如何消费服务提供者接口的文章,介绍了Ribbon和Feign两种客户端负载均衡的方式。首先,文章解释了Ribbon的基本原理,它通过与Eureka结合,使用ribbonServerList和DiscoveryEnabledNIWSServerList来实现服务的负载均衡。接着,文章展示了如何配置Spring Boot项目,通过RestTemplate和@LoadBalanced注解实现服务的负载均衡,并展示了调用多个服务实例的过程。然后,文章转到Feign,介绍了Feign作为一个声明式Web Service客户端如何简化服务调用,结合Eureka和Ribbon提供负载均衡功能,展示了如何通过@FeignClient注解轻松定义和调用服务接口。最终,文章通过实例演示了两者在实际应用中的负载均衡效果。
运维
未读
Docker 数据卷
这是一篇关于Docker容器数据管理的文章,介绍了两种主要的数据管理方式:数据卷和数据卷容器。数据卷是一个独立于容器生命周期的数据存储解决方案,支持容器间的数据共享与持久化。通过-v或--mount参数可以创建和挂载数据卷,支持命名卷、绑定挂载及Docker Compose的定义方式。数据卷容器则是一种专门用于存储和共享数据的容器,能够解耦数据与容器的关系,方便多个容器共享同一数据。文章还介绍了如何查看和删除数据卷,以及如何通过数据卷容器实现容器间的数据共享与持久化。
运维
未读
Docker 容器链接
这是一篇关于Docker容器链接的文章,介绍了容器链接的概念及配置方法。容器链接允许一个容器通过指定别名访问另一个容器的服务,实现容器间的通信。通过--link选项在创建容器时进行配置,目标容器可以通过环境变量访问源容器的服务。然而,容器链接存在一些限制,如只能在同一主机上使用,并且已被标记为“Legacy Links”。现代Docker推荐使用用户定义的网络、服务发现工具和编排工具来替代容器链接,实现容器间更灵活的通信。