大key指的是百kb左右的键值对。
单点:all in one,
优点:简单;
缺点:不具备高可用,一台宕机玩完。
集群:多个单点,或多微服务模块。
优点:
缺点:
分布式:a+b+c = 单点,分散部署在不同的机器上的。
soa:面向服务架构。
微服务:a=b+c,d=e+f,g=h+i,将abc拆分成6个微服务。
微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势。
面向服务架构如果一句话来谈SOA和微服务的区别,即微服务不再强调传统SOA架构里面比较重的ESB
proxySQL官网
主服务器和sentinel网络出现了问题,会重新选举出master节点,
解决方案:两个参数 min-slaves-to-write 配置主库进行数据 同步时最小从库数量
min-slaves-max-log设置主从库之前数据复制的最大延迟
方案一,先写后查,字段全量写入不自动生成。
方案二,延迟查询,不好预估预留时间,可以作为临时方案。
方案三,读写分离框架,如sharding jdbc等。
方案四,MGR全同步复制,强一致性。
待完善,先了解多级缓存后补充
应用场景,数据存储节点是少量而稳定的,大多数场景并没有灵活扩容的需求。
待完善
工具:阿里的canal
存储数据库MongoDB
将订单id%n将json写入分片
github canal
场景:整点秒杀、春运抢票等等场景。
工具:阿里的Sentinel
流控规则采取预热模式,warm up,逐渐提升阈值来给系统留出缓冲时间。
使用方法可以参考我之前的一篇博客
Spring Cloud + Sentinel实现服务流量控制、熔断降级
单表数据量超过1000w,或者单表数据文件 .ibd文件超过20GB。
分表方法:
范围法:假设有300个数据,1-100 第一个表,101-200第二个表,201-300第三个表。
哈希法:id取模3,进行分表。
单库多表:有效缩小磁盘的扫描范围。
多库多表:提高并行能力。
挑战:
分布式事务问题,跨库join关联查询,跨节点分页查询问题,全局主键id问题,扩容问题。
参考 Redis分布式锁的使用和Apache JMeter使用
选择rpc的几个考量,性能、对内。
选择rest几个考量,简单,对外。
github spring-boot-admin官方地址
Spring Boot Admin Reference Guide
第一步:添加依赖
<dependency>
<groupId>de.codecentricgroupId>
<artifactId>spring-boot-admin-starter-serverartifactId>
<version>2.4.2version>
dependency>
第二步:主启动类新增注解
@EnableAdminServer
第三步:配置文件
server:
port: 8090
spring:
application:
name: admin-server
<dependency>
<groupId>de.codecentricgroupId>
<artifactId>spring-boot-admin-starter-clientartifactId>
<version>2.4.2version>
dependency>
第二步:配置文件
server:
port: 8091
spring:
application:
name: admin-client
boot:
admin:
client:
url: http://localhost:8090
management:
endpoints:
web:
exposure:
include: '*'
配置文件新增
logging:
file:
name: logs/${spring.application.name}.log
参考文档第5部分。
client
依赖
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-actuatorartifactId>
dependency>
配置文件
server:
port: 8911
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
group: spring-boot-admin-nacos
application:
name: spring-boot-admin-client-nacos
management:
endpoints:
web:
exposure:
include: '*'
logging:
file:
name: logs/${spring.application.name}.log
server
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
配置文件
server:
port: 8910
spring:
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
group: spring-boot-admin-nacos
application:
name: spring-boot-admin-server-nacos
https://quarkus.io/
https://github.com/quarkusio/quarkus
https://cn.quarkus.io/
为什么大家说mysql数据库单表最大两千万?依据是啥?