微服务架构实战
文章平均质量分 73
金霖海
这个作者很懒,什么都没留下…
展开
-
手写Java红黑树
文章目录红黑树1.红黑树基本的特征介绍2.红黑树变换颜色的规则要求3.红黑树左右旋转基本的规则4.纯手写红黑树左旋转和变色5.红黑树查询最大值红黑树1.红黑树基本的特征介绍基本特征:每个节点不是红色就是黑色不允许两红相连根节点都是黑色每个红色节点的两个子节点都是黑色默认情况下添加的节点为红色节点备注:如果产生了红色相连如何解决:变色或者旋转。红黑树平衡规则:1.改变节点颜色2.左旋转3.右旋转2.红黑树变换颜色的规则要求变色或者旋转都是插入节点后修复平衡的实现。变色:当前原创 2021-12-13 16:25:18 · 978 阅读 · 0 评论 -
7-微服务实战-1-微服务架构演变过程
1 微服务架构演变过程之传统架构微服务架构如何演变的?传统单体架构→分布式架构→SOA面向服务架构→微服务架构模式→服务网格技术?传统单体架构模式传统的单体架构,也就是单点应用,也就是早期的SSM或者SSH整合项目。采用分层架构模式、数据库访问层、业务逻辑层、控制层,从前端到后端所有的代码都是一个人写的。com.chenyun.controler —springmvc 视图层 jsp/ftlcom.chenyun.service —业务逻辑层com.chenyun.dao—数据库访问层将项原创 2021-11-23 14:54:27 · 210 阅读 · 0 评论 -
6-RabbitMQ实战
文章目录6-RabbitMQ实战-1-RabbitMQ 简介和环境搭建什么是消息队列?为什么要使用消息队列?**1.1.搜索与商品服务的问题**1.2.消息队列(MQ)1.2.1.什么是消息队列1.2.2.AMQP和JMS1.2.3.常见MQ产品1.2.4.RabbitMQ2 安装RabbitMQ2.1CentOS7 安装RabbitMQ2.2Docker安装RabbitMQ一、获取镜像二、运行镜像三、访问ui页面2.3docker-compose安装RabbitMQ3 管理界面介绍主页添加用户添加虚拟主机原创 2021-09-21 16:23:59 · 775 阅读 · 0 评论 -
5-Redis实战-10-Redis缓存穿透&击穿&雪崩解决方案
1 传统一主多从复制存在哪些问题在传统的一主多从中会存在哪些问题?如果从节点非常多,会导致对主节点同步多个从节点压力非常大。可以采用树状形式解决该问题。2 Redis缓存穿透概念与解决方案Redis安全控制穿透、击穿、雪崩 对数据库访问压力大的问题缓存穿透缓存穿透是指使用不存在的key进行大量的高并发查询,导致缓存无法命中,每次请求都要穿透到后端数据库查询,使得数据库的压力非常大,甚至导致数据库服务压死;解决方案:1.接口实现api的限流、防御ddos、接口频率限制、网关实现黑名单2.原创 2021-08-30 09:08:36 · 129 阅读 · 0 评论 -
5-Redis实战-9-基于Redis分布式锁实现秒杀
1 什么是分布式锁?应用场景有哪些什么是分布式锁? 举个场景本地锁:在多个线程中,保证只有一个线程执行(线程安全的问题)分布锁:在分布式中,保证只有一个jvm执行(多个jvm线程安全问题)如果当前服务器是集群的时候,定时任务可能会重复执行可以采用分布式锁解决,谁抢到锁谁执行任务。2 实现分布式锁核心的思路分布式锁实现方案:基于数据库方式实现基于Zk方式实现 采用临时节点+事件通知基于Redis方式实现 setnx 命令方式实现分布式锁核心思路:1.获取锁多个不同的jvm 同时创建原创 2021-08-28 11:33:39 · 385 阅读 · 1 评论 -
5-Redis实战-8-Redis六大淘汰策略&过期key事件监听
1 复习在Redis中存放对象使用 json和二进制有哪些区别吗?二进制只能在java语言中使用,json可以跨语言、跨平台,阅读性更强RDB与AOF同步的区别:RDB属于全量同步(定时同步)优点:同步效率非常高缺点:数据可能会丢失AOF属于增量同步 有点偏向实时优点:同步效率比较低,最多只会丢失1s中数据平衡点:既然要效率高、数据不丢失使用 aof的everysec模式如果aof与rdb都开启优先使用aof。2 Redis核心六大淘汰策略Redis数据存放在内存里面,有可能会撑爆,原创 2021-08-19 20:54:59 · 232 阅读 · 0 评论 -
5-Redis实战-6-SpringBoot整合Redis哨兵
SpringBoot整合Redis哨兵主要修改SpringBoot配置文件spring: redis: #redis数据库的密码 password: 123456 #配置redis连接池 jedis: pool: max-active: 8 max-wait: -1 max-idle: 8 min-idle: 0 sentinel: #主库的名称 master:原创 2021-08-19 20:37:04 · 152 阅读 · 0 评论 -
微服务架构-5-Redis实战-5-SpringBoot整合Redis缓存注解开发
redis缓存注解Spring Boot缓存注解@Cacheable、@CacheEvict、@CachePut使用@Cacheable(查询)@CachePut(新增修改)@CacheEvict(清空缓存)a.概念Spring Boot缓存注解@Cacheable、@CacheEvict、@CachePut使用1、@Cacheable可以标记在一个方法上,也可以标记在一个类上。当标记在一个方法上时表示该方法是支持缓存的,当标记在一个类上时则表示该类所有的方法都是支持缓存的。对于一个支持原创 2021-08-05 17:29:48 · 187 阅读 · 0 评论 -
微服务架构-5-Redis实战-4-Redis数据类型和SpringBoot整合Redis
一 数据结构简介1 Redis分为16个库的作用Redis默认的情况下分为16个库0-15,每个单独的库key不允许重复,不同的库key允许重复2 Redis的五种数据类型Redis数据类型String类型、Hsh类型、List类型、Set类型 、Sorted-SetsStringString是redis最基本的类型,一个key对应一个value,redis的string可以包含任何数据。比如jpg图片或者序列化的对象, Sring类型是Redis最基本的数据类型,一个键最大能存储512MB原创 2021-08-05 15:58:14 · 131 阅读 · 0 评论 -
微服务架构-5-Redis实战-3-Docker-compose配置Redis主从和哨兵
一 Docker-compose配置Redis主从1 创建redis的docker-compose.yml文件version: '3'services: # 主节点的容器 redis-server-master: image: redis container_name: redis-server-master restart: always ports: - "6379:6379" # 指定时区,保证容器内时间正确 environme原创 2021-08-05 13:10:53 · 143 阅读 · 0 评论 -
微服务架构-5-Redis实战-2-Docker配置Redis主从和哨兵
一 redis环境搭建redis环境搭建参考 https://blog.csdn.net/qq_33396183/article/details/103124244二 使用Docker实现Redis主从配置1.创建本地与docker映射的目录1.在/data/redis目录下新建文件夹redis_cluster[root@localhost roo]# mkdir -p /data/redis/redis_cluster2.我们需要搭建三个redis集群,在redis_cluster目录下新建原创 2021-08-05 11:04:16 · 120 阅读 · 0 评论 -
微服务架构-5-Redis实战-1-Redis为什么单线程能够支持高并发
Redis官方没有windows版本redis,只有linux版本的reids。Redis的底层是采用nio的多路io复用机制对多个不同的连接(tcp)实现io的复用,能够非常好的支持高并发,同时能够先天性保证线程安全的问题。多路io复用:使用一个线程维护多个不同的io操作。原理:使用nio的选择器,将多个不同的Channel统一交给Selector(选择器)管理。但是nio的实现在不同的操作系统上存在差别:在windows操作系统上使用select实现轮询机制、在linux操作系统使用epoll。原创 2021-08-05 08:26:34 · 154 阅读 · 0 评论 -
微服务架构-4-免费开通阿里云服务器
1.注册登录阿里云https://www.aliyun.com/1111/new?userCode=jhodhm7r2打开开发者试用中心https://free.aliyun.com/?spm=5176.10695662.7708050970.1.15a61006oTjgCi3选择云服务器4.选择相关配置并购买5 查看消息通知,进入云服务器控制台...原创 2021-08-02 12:32:24 · 216 阅读 · 0 评论 -
微服务架构实战-3-高性能Netty服务器-4:Netty实战与tcp粘包和拆包解决方案
1.Netty框架优点Nio核心设计思想:非阻塞式 、(选择器)io多路复用原则、缓冲区(提高读写效率)java1.4提供了NIO的类库和API不选择Java原生NIO编程的原因1.NIO的类库和API繁杂,使用麻烦;2.需要其他的额外技能做铺垫,例如熟悉Java多线程编程;3.可靠性不足,工作量和难度都非常大;为什么选择Netty框架Netty是业界最流行的NIO框架之一,它的健壮性、功能、性能、可定制性和可扩展性在同类框架中都是首屈一指的,它已经得到成百上千的商用项目验证,例如Hadoo原创 2021-08-01 22:20:52 · 290 阅读 · 0 评论 -
微服务架构实战-3-高性能Netty服务器-3:NIO多路复用原理
IO多路复用多路指的是多个不同的tcp连接;复用指一个线程可以维护多个不同的io操作。好处:占用cpu资源非常小、保证线程安全问题在多路复用IO模型中,会有一个线程(Java中的Selector)不断去轮询多个socket的状态,只有当socket真正有读写事件时,才真正调用实际的IO读写操作。因为在多路复用IO模型中,只需要使用一个线程就可以管理多个socket,系统不需要建立新的进程或者线程,也不必维护这些线程和进程,并且只有在真正有socket读写事件进行时,才会使用IO资源,所以它大原创 2021-08-01 22:10:52 · 231 阅读 · 0 评论 -
微服务架构实战-3-高性能Netty服务器-2:深入理解五种网络通讯的IO模型
文章目录1.同步与异步区别2 多线程实现异步的io的优缺点3.Linux下的五种I/O模型4.各IO模型解释a.阻塞式io(Bio)b.非阻塞式io(Nio)c.IO复用d.信号驱动I/Oe.异步I/O(AIO)1.同步与异步区别站在多线程的角度分析:同步:整个应用代码执行顺序是从上往下执行;异步:开启多个不同的分支实现并行执行,每个线程互不影响;站在web项目角度分析默认的情况Http请求就是一个同步形式实现调用,基于请求与响应,如果响应非常耗时,会导致客户端一直等待(用户体验非常不好)。解原创 2021-08-01 21:48:51 · 138 阅读 · 0 评论 -
微服务架构实战-3-高性能Netty服务器-1:网络编程模型基础
一、网络通信简介1、软件结构 C/S结构:全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构:全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机 的通信的程序。2、网络通信协议 **网络通信协议:**通信协议是计算机必须遵守的规则,只有遵守这些规则,计算机之间才能原创 2021-08-01 21:24:06 · 272 阅读 · 0 评论 -
微服务架构实战-2-项目整体实施流程
项目阶段:一.项目整体实施流程:1)分组(4人左右 建立小组群 确认组长)2)项目池选择项目(小组讨论决定)3)选择一个小组的项目讲解项目开发流程a) 需求和项目背景调研以及市场调研b) 需求讨论c) 确认功能模块d) 确认功能优先级e) 技术选型(前端用什么技术 后端用什么技术 数据库用什么技术 是否需要缓存)f) 框架搭建(主要是组长负责 组长也可以给组员安排任务)i. 后台搭建ii. 数据库搭建iii. 缓存搭建iv. 前端搭建v. 后端 前端代码 上传至git或者svn原创 2021-08-01 18:07:16 · 275 阅读 · 0 评论 -
微服务架构实战-1-项目开发规范
编码和命名规范1)变量 方法 类的命名风格统一 (全部驼峰)2)团队开发要勤写注释3)最好由组长定义一套增删改查 从controller层到service 到serviceImpl 到dao层到mapper 的编写规范(分布式项目中还包括 feign客户端 fallBack降级类 yml配置的模版规范) 大家按照模版来套 保证整个项目的风格统一 提升代码的可读性 便于项目代码维护4)数据库表名 字段名 命名风格统一5)每个表都必须包含 创建者的id 创建时间 修改时间 修改者的id 逻辑删除原创 2021-07-31 15:46:21 · 277 阅读 · 0 评论