战狂粗人张

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

01 2020 档案

摘要:一.需求 一般业界,对订单数据的分库分表,有两类思路:按照订单号来切分、按照用户id来切分。 二.按照订单号来做 hash分散订单数据 把订单号看作是一个字符串,做 hash,分散到多个服务器去。 具体到哪个库、哪个表存储数据呢?订单号里面的数字来记录着。 如果要查询某用户的所有订单呢? 由于是根据 阅读全文
posted @ 2020-01-28 16:51 战狂粗人张 阅读(593) 评论(0) 推荐(0) 编辑

摘要:对于后端程序员,特别是 Java 程序员来讲,排查线上问题是不可避免的。各种 CPU 飚高,内存溢出,频繁 GC 等等,这些都是令人头疼的问题。那么,遇到这些问题该如何解决呢? 首先,出现问题,肯定要先定位问题所在,然后分析问题原因,再然后解决问题,最后进行总结,防止下次再次出现。线上问题千奇百怪, 阅读全文
posted @ 2020-01-28 13:58 战狂粗人张 阅读(238) 评论(0) 推荐(0) 编辑

摘要:一.架构实现 总的来说我的通用架构还是以三层架构为基础进行演变的,在经典的三层架构中,最上层的是controller,中间是service,下层是dao。 在微服务的架构中,最上层是网关层,controller只是网关的一种,中间是业务层,service只是业务层的入口,最下层是基础层,dao只是基 阅读全文
posted @ 2020-01-27 23:56 战狂粗人张 阅读(280) 评论(0) 推荐(0) 编辑

摘要:一.技术选型: 网关:Nginx、Kong、Zuul 缓存:Redis、MemCached、OsCache、EhCache 搜索:ElasticSearch、Solr 熔断:Hystrix、resilience4j 负载均衡:DNS、F5、LVS、Nginx、OpenResty、HAproxy 注册 阅读全文
posted @ 2020-01-27 23:01 战狂粗人张 阅读(196) 评论(0) 推荐(0) 编辑

摘要:系统容量预估 预估步骤: (1)注册用户数-日均UV量-每日的PV量-每天的并发量; (2)峰值预估:平常量的2~3倍; (3)根据并发量(并发,事务数),存储容量计算系统容量。 客户需求:3~5年用户数达到1000万注册用户; 每秒并发数预估: (1)每天的UV为200万(二八原则); (2)每日 阅读全文
posted @ 2020-01-27 21:11 战狂粗人张 阅读(409) 评论(0) 推荐(0) 编辑

摘要:一.微服务架构特点 (1)服务服务力度:粒度是围绕业务进行拆分的。 (2)独立进程:任何一个微服务从它的开发,测试,上线,以及运维等过程都可以独立的进行,不依赖以其他的微服务。 (3)围绕业务建模:微服务架构是围绕业务建模的 (4)轻量级通信:通信模式是轻量级的,两个模块之间的通信没有语言关系,没有 阅读全文
posted @ 2020-01-27 20:20 战狂粗人张 阅读(210) 评论(0) 推荐(0) 编辑

摘要:一.微服务解耦系统 1、解耦现有模块 将现有耦合在一起的模块进行重新的设计,设计成可以独立部署的多个模块,使用微服务框架很容易做到。 比如下面是微服务实现的一个架构设计图。 2、抽取公共模块 架构设计原则之一就是反向依赖,只从上往下依赖,所以将公共的重复功能的模块抽取出来。必须强调一点的是,公共模块 阅读全文
posted @ 2020-01-27 19:36 战狂粗人张 阅读(222) 评论(0) 推荐(0) 编辑

摘要:一.微服务概念 X轴:运行多个负载均衡器之后的运行实例,是水平复制。比如讲单体系统多运行几个实例,做个集群加负载均衡的模式。 Y轴:将应用进一步分解为微服务(分库),是微服务的拆分模式,就是基于不同的业务进行拆分。 Z轴:大数据量时,将服务分区(分表),是数据分区,比如按照用户请求的地区进行数据分区 阅读全文
posted @ 2020-01-27 19:19 战狂粗人张 阅读(204) 评论(0) 推荐(0) 编辑

摘要:第一种:普通for循环插入 @Test public void testInsertBatch2() throws Exception { long start = System.currentTimeMillis(); User user; SqlSession sqlSession = sqlS 阅读全文
posted @ 2020-01-12 03:43 战狂粗人张 阅读(427) 评论(0) 推荐(0) 编辑

摘要:需求: 如何生成唯一的订单序列号? 格式按照:yyyyMMdd+两位业务码+10位的自增序列, 比如:20150101**99**0000000001。 思路: (1)获得日期很简单; (2)业务码是调用服务传入的参数; (3)使用Redis来实现10位的自增序列的保存和自增,使用serial.nu 阅读全文
posted @ 2020-01-12 03:32 战狂粗人张 阅读(3113) 评论(0) 推荐(0) 编辑

摘要:例子代码: 第一步: <!--Excel包--> <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>eas 阅读全文
posted @ 2020-01-12 03:20 战狂粗人张 阅读(2505) 评论(0) 推荐(0) 编辑

摘要:前言: 在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,第一反应是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql中有ON DUPLICATE KEY UPDATE一步就可以完成,感觉实在是太方便了, 该语句是基于唯一索引或 阅读全文
posted @ 2020-01-05 02:52 战狂粗人张 阅读(248) 评论(0) 推荐(0) 编辑

摘要:一.什么是ESB ESB是Enterprise Service Bus的简称,中文翻译为企业服务总线,企业服务总线是一个实现系统间集成和互联互通的重要技术架构,可以理解为是一种消息和服务集成的中间件平台。 二.ESB解决了什么问题以及什么是HSB ESB主要是为了解决多个应用系统互联所面临的的复杂性 阅读全文
posted @ 2020-01-04 23:45 战狂粗人张 阅读(3357) 评论(0) 推荐(0) 编辑

摘要:一.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象。 这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式 阅读全文
posted @ 2020-01-02 02:07 战狂粗人张 阅读(201) 评论(0) 推荐(0) 编辑

摘要:一.使用Callable多线程: 通过Callable接口实现多线程 实现Callable重写call方法; 实现Callable和实现Runnable类似,但是功能更强大,具体表现在: a.可以在任务结束后提供一个返回值,Runnable不行; b.call方法可以抛出异常,Runnable的ru 阅读全文
posted @ 2020-01-01 23:52 战狂粗人张 阅读(3077) 评论(0) 推荐(0) 编辑