- 博客(27)
- 收藏
- 关注
原创 技术中台与终搜——2
索引映射OpenAPI定义索引(映射)接口/***索引操作接口*///新增索引+映射定义索引(映射)实现@Override//创建索引请求//获取下游业务参数//循环参数//设置settings参数//设置mapping参数//创建索引操作客户端//创建响应对象新增控制器/***索引操作控制器*/@Autowired//构造返回下游业务数据//增加索引(映射)是否成功try{//通过接口调用远程结构化查询方法。
2025-01-20 10:04:05
1194
原创 Spring Cloud所有组件的功能和Spring Cloud Alibaba所有组件的功能
Spring Cloud是一组构建分布式系统的开源框架,它提供了多个组件来简化微服务架构的开发和部署。
2025-01-16 09:57:23
359
原创 spring、springmvc、springboot的关系
Spring是一个开源的、轻量级的Java开发框架,它最初由Rod Johnson在其著作中提出,旨在解决企业应用开发的复杂性。Spring框架基于IoC(控制反转)和依赖注入(DI)原则,通过简化和模块化开发过程,帮助开发人员构建灵活、可扩展和可维护的应用程序。Spring框架包含了许多子项目,如Spring MVC、Spring JDBC、Spring AOP等,这些子项目共同提供了丰富的功能支持。
2025-01-16 09:53:41
420
原创 技术中台与终搜——1
中台是介于前台和后台中间的平台(基础中间件),有点像编程时的适配层,起到承上启下的作用。当组织架构太深了,前台后台隔得太远,沟通成本太高时,通过中台可以一定程度上来解决这个问题。终搜平台是技术中台的一种体现;比如统一OSS,自动化配置、统一监控、统一登录平台、CICD&一站式终搜平台都是技术中台的实现。服务名称端口查询服务8888分析服务5555网关服务6666logstash9600kibana5601mysql3306nacos18848–>8848nacos2。
2025-01-14 09:50:28
1252
原创 利用logstash同步100万MySQL数据到es
容器创建的时间跟系统时间差了八小时,通过测试可以得出结果,因容器启动也需要时间,所以同步100万数据的大概时间是20分钟左右。由于是本地测试,网络波动不是很大,如果是远程服务器测试,需要的时间大约是30分钟左右。
2025-01-07 14:22:13
757
原创 docker-compose搭建ES 7.14.0集群、Kibana 7.14.0、cerebro和logstash 7.14.0
尝试重启kibana,这个问题是在docker中连接不到es下一篇文章给大家带来logstash同步100万mysql数据到es的案例。
2024-12-30 08:17:29
1075
原创 docker-compose 搭建nacos集群
访问 http://ip:8848/nacos,查看是否能访问到三个 Nacos 实例。如果能看到三个节点,则说明集群启动成功。
2024-12-23 08:44:48
1470
原创 千万级订单的生成方案
下订单过程,业务极其复杂,不只是订单号的生成插入,除了订单系统,还可能涉及库存系统,促销系统,支付系统,结算系统,积分系统,同时可能有下游的订单统计中心。如果是上面的补单,支付金额就需要作为差价记录实际支付金额,条目标记为换货差价 涉及分期支付,对应多笔支付单,形成虚拟条目标注支付内容。下单减库存的,要注意超时取消,大订单量及分库分表条件下,扫表方案不可取,应该设计为延迟消费支付减库存的,不需要额外处理。多为强依赖的关联,使用分布式框架,基于框架层面的重试机制,接口幂等设计,保障数据的最终一致性。
2024-12-18 12:14:33
1030
原创 业务幂等性技术——3
在系统中当使用消息队列时,无论做哪种技术选型,有很多问题是无论如何也不能忽视的,如:消息必达、消息幂等等。本章节以典型的RabbitMQ为例,讲解如何保证消息幂等的可实施解决方案,其他MQ选型均可参考。
2024-12-17 08:47:47
916
原创 业务幂等性技术——2
对于防止数据重复提交,还有一种解决方案就是通过防重表实现。防重表的实现思路也非常简单。首先创建一张表作为防重表,同时在该表中建立一个或多个字段的唯一索引作为防重字段,用于保证并发情况下,数据只有一条。在向业务表中插入数据之前先向防重表插入,如果插入失败则表示是重复数据。对于防重表的解决方案,可能有人会说为什么不使用悲观锁。悲观锁在使用的过程中也是会发生死锁的。悲观锁是通过锁表的方式实现的。假设现在一个用户A访问表A(锁住了表A),然后试图访问表B;另一个用户B访问表B(锁住了表B),然后试图访问表A。
2024-12-16 11:28:03
1193
原创 业务幂等性技术——1
幂等本身是一个数学概念。即f(n) = 1^n,无论n为多少,f(n)的值永远为1。在编程开发中,对于幂等的定义为:无论对某一个资源操作了多少次,其影响都应是相同的。换句话说就是:在接口重复调用的情况下,对系统产生的影响是一样的,但是返回值允许不同,如查询。幂等性不仅仅只是一次或多次操作对资源没有产生影响,还包括第一次操作产生影响后,以后多次操作不会再产生影响。并且幂等关注的是是否对资源产生影响,而不关注结果。此SQL无论执行多少次,虽然结果有可能出现不同,都不会对数据产生改变,具备幂等性。
2024-12-13 11:14:29
1012
原创 12.面试题——Spring Boot
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。
2024-08-10 15:25:42
1388
原创 11.面试题——消息队列RabbitMQ
RabbitMQ是一种开源的消息队列中间件,用于在应用程序之间进行可靠的消息传递。它实现了AMQP(Advanced Message Queuing Protocol)协议,提供了强大的消息处理能力。
2024-08-09 10:59:26
1445
原创 Java中锁的类别
乐观锁是一种乐观思想,假定当前环境是读多写少,遇到并发写的概率比较低,读数据时认为别的线程不会正在进行修改(所以没有上锁)。写数据时,判断当前 与期望值是否相同,如果相同则进行更新(更新期间加锁,保证是原子性的)。Java中的乐观锁: CAS,比较并替换,比较当前值(主内存中的值),与预期值(当前线程中的值,主内存中值的一份拷贝)是否一样,一样则更新,否则继续进行CAS操作。
2024-08-07 14:11:23
984
原创 10.面试题——JVM
JVM,也就是 Java 虚拟机,它是 Java 实现跨平台的基石。Java 程序运行的时候,编译器会将 Java 源代码(.java)编译成平台无关的 Java 字节码文件(.class),接下来对应平台的 JVM 会对字节码文件进行解释,翻译成对应平台的机器指令并运行。同时,任何可以通过 Java 编译的语言,比如说 Groovy、Kotlin、Scala 等,都可以在 JVM 上运行。
2024-08-06 11:01:18
1367
1
原创 8.面试题——Mybatis
Mybatis是一种流行的Java对象关系映射(ORM)框架,它将Java对象映射到关系型数据库中的表格。它提供了一种简单的方式来编写SQL语句并将其映射到Java对象,同时避免了很多传统JDBC的冗长代码。在使用Mybatis时,开发人员可以编写简洁的SQL语句,并且可以使用动态SQL和参数映射来进行高效和灵活的数据操作。除了ORM之外,Mybatis还提供了许多高级功能,如缓存机制、批量操作、分页等等。
2024-08-03 11:19:18
696
原创 7.面试题——Spring MVC
Spring MVC是Spring框架中的一个模块,它基于MVC(模型-视图-控制器)设计模式,为Web应用程序提供了一个全面的解决方案。Spring MVC作为一种轻量级的Web框架,主要用于构建Web应用程序的表述层(也称为表现层或前端控制层)。它通过将应用程序的不同部分(如数据访问、业务逻辑和表现层)分离,提高了应用程序的可维护性和可扩展性。
2024-08-02 10:35:18
437
原创 6.面试题——Spring
Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。
2024-08-01 14:14:13
1476
原创 5.面试题——Elasticsearch
使用ElasticSearch的主要好处在于其强大的全文搜索和实时分析能力。ElasticSearch基于Apache Lucene构建,提供了高性能、可扩展的搜索解决方案,支持复杂的搜索查询,如模糊搜索、全文搜索、多字段搜索、地理空间搜索等。它能够自动处理文本分析,如分词、索引和查询优化,从而极大地提升了搜索速度和准确性。此外,ElasticSearch支持分布式部署,能够轻松处理PB级数据,保证了系统的高可用性和可扩展性。
2024-07-30 11:24:27
1306
原创 4.面试题——Redis
官方FAQ表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!)Redis利用队列技术将并发访问变为串行访问1)绝大部分请求是纯粹的内存操作(非常快速)2)采用单线程,避免了不必要的上下文切换和竞争条件速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度 都是O(1)
2024-07-26 14:35:23
1130
原创 2.Java面试题——集合
Java中的集合是Java编程语言提供的一种数据结构,用于存储、操作和处理一组数据。它是Java编程语言中非常重要的一部分,广泛应用于各种Java应用程序的开发中。Java集合框架提供了一系列类和接口,用于实现不同类型的集合。
2024-07-18 12:28:49
1042
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人