分布式
文章平均质量分 88
背着代码去游走
这个作者很懒,什么都没留下…
展开
-
架构师为什么要做这样的架构?
1. 软件架构设计的What & Why● 啥是软件架构(Software Architecture)?软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。组件的外部可见属性是指其他组件对该组件所做的假设。软件架构设计就是从宏观上说明一套软件系统的组成与特性。软件架构设计是一系列有层次的决策 ,比如:功能与展现的决策;技术架构的决策;自主研发还是合作;商业软件转载 2022-03-25 10:03:44 · 205 阅读 · 0 评论 -
基于DDD的微服务设计和开发实战
目录基于DDD的微服务设计和开发实战1 目标2 适用范围3 DDD 分层架构视图展现层应用层领域层基础层4 服务视图微服务内的服务视图1、接口服务2、应用服务3、领域服务4、基础服务微服务外的服务视图1. 前端应用与微服务2. 微服务与外部应用5 数据视图6 领域事件和事件总线微服务内的领域事件微服务之间的领域事件事件总线事件数据持久化7 微服务...转载 2022-02-25 10:45:34 · 669 阅读 · 0 评论 -
ShardingSphere 5.0 分库分表java写法
ShardingSphere 5.0 分库分表 java写法 官方文档描述很少,需要稍微摸索下,简单例子如下://主要就是这个数据源,java写法可以在需要分表的方法上注入配好的分库分表数据源或者通过切面自动切换数据源@Bean(name = "shardingDataSource")@Qualifier("shardingDataSource")DataSource getShardingDataSource(@Qualifier("ds0") DataSource ds0, @Qualif原创 2022-02-17 15:31:16 · 868 阅读 · 0 评论 -
为什么说MySQL单表数据不要超过500万行
个人总结: 1)如果单表容量大(大于2G),但是索引少(只通过主键ID查),性能也不会慢 2)如果数据量大(大于500W),但是索引容量小(都是小字节字段),性能也不会慢 3)所以,单表查询的性能取决于索引的大小(因为会放内存里),而索引的查询速度又受硬件的影响。 4)建议:大表(数据量大、容量大)。先拆成主表(字段多)、detail表(容量高)。主表严格控制索引的质量,detail表只能用主键ID查(后期可以通过主键ID分表)。以下是正文:今天,探讨一个有趣的话题:MySQ转载 2022-01-27 16:52:36 · 2078 阅读 · 0 评论 -
运用RUP 4+1视图方法进行软件架构设计
要开发出用户满意的软件并不是件容易的事,软件架构师必须全面把握各种各样的需求、权衡需求之间有可能的矛盾之处,分门别类地将不同需求一一满足。本文从理解需求种类的复杂性谈起,通过具体案例的分析,展示了如何通过RUP的4+1视图方法,针对不同需求进行架构设计,从而确保重要的需求一一被满足。 呼唤架构设计的多重视图方法 灵感一闪,就想出了把大象放进冰箱的办法,这自然好。但希望每个架构设计策略都依靠灵感是不现实的--我们需要系统方法的指导。 需要架构设计...转载 2021-11-17 15:53:49 · 241 阅读 · 0 评论 -
阿里巴巴数据库分库分表的实践
在2006年阿里巴巴B2B团队以开源方式研发了Cobar这一关系型数据的分布式处理系统。该系统在很大程度上解决了最初使用Oracle数据库因为存储数据变得越来越大带来的扩展性问题,并且为开发人员提供了一个使用相对简单的用户体验,在当时Cobar平均每天处理近50亿次的SQL操作。阿里巴巴分布式数据层平台发展和演变业务数据从原来的单库单表模式变成了数据被拆分到多个数据库,甚至多个表中,如果在数据访问层做一下功能的封装和管控,所有分库分表的逻辑和数据的跨库操作都交给应用的开发人员来实现,则对开发人员的要转载 2021-08-24 11:51:41 · 609 阅读 · 0 评论 -
互联网性能与容量评估的方法论和典型案例
1 背景本文欢迎转载,转载请注明原文链接,并附作者个人信息李艳鹏。性能至上武林中,“天下武功出少林”指中国各门各派的武功都与少林武学有一定的渊源,技术也是相同的道理,所有的技术最终体现在计算机知识的基本功上,这些基本功是技术的易筋经,是“内功”,一些年轻的攻城狮更热衷于追崇高大上的框架,过去在炒SSH,现在在炒Spring Cloud,这些对框架掌握的程度体现在“剑术”上,我推荐每个技术研发人员在修炼好内功的基础上,再去练“剑术”。回头看IT行业的发展,先有传统行业,再有互联网,传统行业和互转载 2021-08-02 10:45:58 · 538 阅读 · 0 评论 -
redis 与 db 双写数据一致性解决方案
本文的行文次序,首先介绍集中式缓存的缓存模式和数据一致性,然后介绍二级缓存的架构和数据一致性,最后介绍三级缓存的架构和数据一致性指南2:不吹牛,本文在全网数据一致性的所有博文中,绝对算是史上最全的。本文最为全面的介绍了 redis 与 db 双写数据一致性解决方案,当然, 会参考了最新的一些文章, 但是解决那些 复制来复制去的bug,另外,本文增加了 L2 、L3 多级缓存的一致性问题总之本文非常经典,绝对的高分面试必备, 建议边学习、边思考,并且一定要实战如果有问..转载 2021-07-06 17:46:20 · 1739 阅读 · 0 评论 -
spring boot mybatis 优雅的数据源切换
当一个项目有多个数据源时,我们可以通过spring 切面优雅的实现数据源切换1.定义切面@Component@Slf4j@Aspect@Order(-1)public class DataSourceAspect { public DataSourceAspect(){ logger.debug("选择数据源---"); } private static final Logger logger = LoggerFactory.getLogger(D原创 2020-11-13 15:07:10 · 193 阅读 · 0 评论 -
Sentinel 针对IP限流
Sentinel 可以简单实现针对IP的限流,通过改造限流策略的针对来源选项1.首先我们要自定义来源解析RequestOriginParser@Configurationpublic class SentinelConfig { @Bean public RequestOriginParser requestOriginParser() { return (request -> { String remoteAddr = IpUtil原创 2020-09-08 14:21:01 · 9416 阅读 · 6 评论 -
Sentinel之限流、降级、系统保护、热点、授权规则
简介Sentinel是阿里中间件团队开源的,面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。本文主要讲限流、熔断降级、热点、系统保护、授权等方面,并持久化到Nacos中。安装sentinel控制台官方下载地址:https://github.com/alibaba/Sentinel/releases提供1.7的版本:https://pan.baidu.com/s/1JS2tP_7T0Coh4lE5t.转载 2020-08-27 13:39:14 · 1267 阅读 · 0 评论 -
mysql explain执行计划详解
mysql explain执行计划详解1)、id列数字越大越先执行,如果说数字一样大,那么就从上往下依次执行,id列为null的就表是这是一个结果集,不需要使用它来进行查询。2)、select_type列常见的有:A:simple:表示不需要union操作或者不包含子查询的简单select查询。有连接查询时,外层的查询为simple,且只有一个B:primary:一个需要union操作或者含有子查询的select,位于最外层的单位查询的select_type即为primary..转载 2020-06-28 14:42:10 · 131 阅读 · 0 评论 -
dubbo负载均衡策略
一:负载均衡介绍1.1:负载均衡简介以下是wikipedia对负载均衡的定义: 负载均衡改善了跨多个计算资源(例如计算机,计算机集群,网络链接,中央处理单元或磁盘驱动的的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间,并避免任何单个资源的过载。使用具有负载平衡而不是单个组件的多个组件可以通过冗余提高可靠性和可用性。负载平衡通常涉及专用软件或硬件1.2:简单解释 这个概念如何理解呢?通俗点来说假如一个请求从客户端发起,比如(查询订单列表),要选择服务...转载 2020-06-12 09:41:10 · 355 阅读 · 0 评论 -
spring cloud oauth2 单点登录及资源权限控制简单例子
oauth2 分为认证中心和资源服务中心,做个简单例子一.认证中心 新增认证服务模块项目1.引入pom <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-oauth2</artifactId> <version>2.0.原创 2020-06-11 17:58:07 · 1091 阅读 · 0 评论 -
springboot elasticsearch 结合简单例子
本例子elasticsearch版本7.7.0,采用RestHighLevelClient访问1.首先引入pom <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> </dependency> <depe原创 2020-06-03 16:12:51 · 294 阅读 · 0 评论 -
es分布式架构原理
es分布式架构原理elasticsearch设计的理念就是分布式搜索引擎,底层实现还是基于Lucene的,核心思想是在多态机器上启动多个es进程实例,组成一个es集群。一下是es的几个概念:接近实时 es是一个接近实时的搜索平台,这就意味着,从索引一个文档直到文档能够被搜索到有一个轻微的延迟 集群(cluster) 一个集群有多个节点(服务器)组成,通过所有的节点一起保存你的全部数据并且通过联合索引和搜索功能的节点的集合,每一个集群有一个唯一的名称标识 节点(node) 一个节点就是一个单转载 2020-06-03 13:52:33 · 194 阅读 · 0 评论 -
sharding-jdbc+ springboot+ mybatis 分库分表简单例子
sharding-jdbc定位为轻量级Java框架,在Java的JDBC层提供的额外服务。 它使用客户端直连数据库,以jar包形式提供服务,无需额外部署和依赖,可理解为增强版的JDBC驱动,完全兼容JDBC和各种ORM框架。适用于任何基于JDBC的ORM框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template或直接使用JDBC。 支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP等。 支持任意实现JDB原创 2020-06-02 15:07:22 · 591 阅读 · 0 评论 -
SpringCloud Alibaba之Sentinel工作原理
前言在之前的文章中,老顾介绍了Sentinel框架,此框架主要用来做限流,降级,熔断的;Sentinel框架作用和hystrix框架很类似。今天分享一下Sentinel的工作原理。核心介绍在 Sentinel 里面,所有的资源都对应一个资源名称(resourceName),每次资源调用都会创建一个 Entry 对象。Entry 可以通过对主流框架的适配自动创建,也可以通过注解的方式或调用 SphU API 显式创建。Entry 创建的时候,同时也会创建一系列功能插槽(slot chain),这些转载 2020-05-29 14:20:06 · 1005 阅读 · 0 评论 -
docker部署Sentinel spring cloud 及心跳源码解析
Sentinel作为降级、限流、系统保护的利器,是作为微服务比不可少的组件,Sentinel启用也相对简单,首先通过docker快速部署 运行命令docker run --name my.sentinel -d \-p 8858:8858 \bladex/sentinel-dashboardhttp://192.168.20.101:8858 用户名/密码:sentinel/sentinel1.引入pom <!--sentinel--> &l...原创 2020-05-29 14:00:38 · 723 阅读 · 0 评论 -
Spring cloud sleuth+zipkin 微服务调用链路跟踪
安装采用docker安装1.docker pull openzipkin/zipkin2.docker run -p 9411:9411 openzipkin/zipkin3.http://localhost:9411/zipkin/ //访问地址1.引入pom <dependency> <groupId>org.springframework.cloud</groupId> <arti原创 2020-05-28 11:03:14 · 165 阅读 · 0 评论 -
spring 服务网关Gateway 自定义filter 程序写法
Gateway服务网关快速开始@Configurationpublic class GatewayRoutes { @Autowired private DefaultInit defaultInit; @Autowired private MyGatewayFilter myGatewayFilter; @Bean public Rou...原创 2020-04-02 14:27:29 · 1424 阅读 · 0 评论 -
spring cloud gateway权限校验
spring cloud gateway权限校验可以整合security实现,我这里采用自定义filter简单实现,步骤如下:1.首先配置RouteLocator,贴代码@Configurationpublic class GatewayRoutes { @Autowired private TokenGatewayFilter tokenGatewayFilter; @B...原创 2020-05-08 10:16:15 · 5165 阅读 · 2 评论 -
springboot2.x 集成百度 ui-dgenerator生成分布式唯一id
百度的ui-dgenerator也是根据snowflake算法更改的方法,关于snowflake算法不做介绍,不懂的可以百度。snowflake算法有个缺点是:时间回拨问题,官方文档也是抛出异常。分布式唯一id:snowflake算法思考文章地址:https://www.cnblogs.com/lirenzuo/p/8440413.html分析时间回拨产生原因第一:人物操作,在真实环境一般不会有那个傻逼干这种事情,所以基本可以排除。第二:由于有些业务等需要,机器需要同步时间服务器(在这个.转载 2020-05-26 15:45:56 · 477 阅读 · 0 评论