JAVA并发编程系列(13)Future、FutureTask异步小王子
本文详细解析了Future及其相关类FutureTask的工作原理与应用场景。首先介绍了Future的基本概念和接口方法,强调其异步计算特性。接着通过FutureTask实现了一个模拟外卖订单处理的示例,展示了如何并发查询外卖信息并汇总结果。最后深入分析了FutureTask的源码,包括其内部状态转换机制及关键方法的实现原理。通过本文,读者可以全面理解Future在并发编程中的作用及其实现细节。
JAVA并发编程volatile核心原理
volatile是轻量级的并发解决方案,volatile修饰的变量,在多线程并发读写场景下,可以保证变量的可见性和有序性,具体是如何实现可见性和有序性。以及volatile缺点是什么?
将Dubbo应用部署到服务网格中
本文主要就Dubbo应用如何接入服务网格、获得各项云原生能力进行了探讨,并提出了最佳实践以及过渡两种实践场景。我们首先推荐您使用Dubbo社区提供的最佳实践场景来接入服务网格,在必要时可以通过过渡方案来向最佳实践方案逐步实现过渡。
【微服务系列笔记】Sentinel入门-微服务保护
Sentinel是一个开源的分布式系统和应用程序的运维监控平台。它提供了实时数据收集、可视化、告警和自动化响应等功能,帮助用户监控和管理复杂的IT环境。本文简单介绍了微服务保护以及常见雪崩问题,解决方案。以及利用sentinel进行入门案例。
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token2
Springboot最全权限集成Redis-前后端分离-springsecurity-jwt-Token2
微服务-美团动态ThreadPoolExecutor底层实现源码实战-改进2
微服务-美团动态ThreadPoolExecutor底层实现源码实战-改进2优化2. 上面的只能实现一个线程池对象,但是实际项目中并不只是这一个线程池对象,所以接下来我们需要进行优化! 创建一个DtpUtil 将来用来存放创建的多个线程池对象
探索 Seata 项目开源开发之旅
在本文中,作者将与大家分享我在 Seata 社区中的开发者之旅,以及在这个旅程中积累的经验和见解。希望通过我的故事,能够激励更多人踏上这充满挑战和激励的开源之路,为开源社区的繁荣做出自己的贡献。
云原生微服务应用的平台工程实践
微服务是一个广泛使用的应用架构,如何使得微服务应用云原生化是近些年一直在演进的课题。本文从云原生应用平台的角度分析云原生化改造中存在的问题,并提出平台工程在开发、测试和 CI/CD 等场景的最佳实践。
SpringBoot集成Jpa极简教程
基本概念 Jpa(Java Persistence API)即 java 持久化api规范,并不是一个ORM框架,而是一种访问数据的接口定义,通过与数据访问框架或者ORM框架配合,可以简单方便的处理与数据库的交互。这种概念有点类似 slf4j 和 logback 的关系。 SpringDataJpa是对JPA规范的封装,旨在提高开发效率,同时不失灵活性,它提供了一种简单、一致的方式来访问不同种类的数据源,包括关系数据库、非关系数据库、MapReduce 框架等。Spring Data JPA 还提供了一些高级特性,如动态查询、多表查询、嵌套查询、存储过程和函数调用等。
阿里云微服务引擎 MSE 2023 年 6 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。
谁才是微服务赢家:Quarkus 与 Spring Boot
在容器时代(“ Docker 时代”),无论您是否在使用它,都不可否定java的活力。Java 在性能方面一直比较有优势,主要是因为代码和真实机器之间的抽象层,多平台的成本(一次编写,随处运行 - 还记得吗?),其中包含 JVM -between(JVM:模拟真实机器所做的软件机器)。 如今,使用微服务架构,也没有任何优势,为总是在同一个地方和平台上运行的东西(Docker 容器 - Linux) 环境构建多平台(解释)的东西。可移植性现在不那么重要了(可能比以往任何时候都重要),那些额外的抽象级别并不重要。
微服务测试:关键策略和工具
开发团队越来越多地选择微服务架构而不是单体结构,以提高应用程序的敏捷性、可扩展性和可维护性。随着决定切换到模块化软件架构——其中每个服务都是一个独立的单元,具有自己的逻辑和数据库,通过 API 与其他单元通信——需要新的测试策略和新的测试工具。
微服务常用的模式语言:统一交流术语
模式语言提供了讨论问题的交流术语,它明确了特定场景、特定问题的解决方案和延伸性思考。模式语言主要目的是帮助开发者解决在设计和编程中遇到的共同的问题,即清晰的问题陈述、体现问题的解决方案以及推动解决方案的力量(Force)的清晰表述。 微服务架构作为一个现在流行的服务架构,也有一套属于自己的模式。这篇文章是微服务架构相关模式语言的一个提纲。Chris Richardson 从不同的角度,对相关的模式进行了分类。可以点击链接查看每个模式的详细描述。下图通过虚线框细分了不同的微服务模式。
59-微服务技术栈(高级):在线检测工具Arthas(精准定位Java应用CPU负载过高)
开发者对于生产问题故障的排查、定位,随着微服务的喷发,也不再像是以前那边依赖纯日志、gc日志进行问题排查与定位了,本节开始介绍一个生产环境使用的排错工具Arthas,帮助大家更高效、便捷地实现生产问题排错。
40-微服务技术栈(高级):分布式搜索引擎ElasticSearch(DSL语法、搜索结果[排序/分页/高亮]处理)
在前面的学习中,笔者带领大家完成海量数据导入ES,实现了ES基本的存储功能,但是我们知道ES最擅长的还是搜索、数据分析。所以本节笔者将继续带领大家研究一下ES的数据搜索功能,同上节一样,继续分别采用DSL和RestClient实现搜索。
37-微服务技术栈(高级):分布式搜索引擎ElasticSearch(初识ES)
随着应用数据的陡增,传统关系型数据库如MySQL/Oracle/RDS等,在处理海量数据的关系映射、数据查询场景还是有性能瓶颈。16年左右巅峰的Solr技术,随着近几年的技术发展也逐步被ES所替代。本节开始我们将花费5节的课程时间,带领读者朋友们认识ES、完成ES常见API的使用的代码演练。
36-微服务技术栈(高级):微服务保护Sentinel实现原理
应用的硬件、软件架构在涉及到部署时,一般会根据实际请求量做一定的压力测试,以测试系统稳定性、健壮性,避免后续线上未知故障。假设在一个电商的秒杀场景下,订单中心本身能够承载的QPS预设是10W,因为活动的火爆导致流量瞬时达到100W,此时订单中心因无法承载其10倍的请求将会崩溃,那么对于整个分布式架构系统会产生什么问题呢?本节我们将借助于Sentinel的流量控制、隔离降级来解决上述分布式架构中常见的雪崩问题。
33-微服务技术栈(高级):分布式事务Seata的SAGA模式与几种模式总结对比
在分布式架构系统中,服务不止一个,一个完整的业务链路肯定也不止调用一个服务,此时每个服务都有自己的数据库增删改查,而每一个写操作对应一个本地事务。如果想要确保全部的业务状态一致,也就意味着需要所有的本地事务状态一致,这在我们之前的学习中肯定是不具备的,如何做到跨服务、跨数据源的事务一致性将是本章节的重点学习内容。
06-微服务技术栈(基础):Nacos注册中心
本节从Nacos安装、运行到具体规则配置,带领读者们深度参与了Nacos日常使用场景,Nacos作为注册中心可以优雅替换Eureka也离不开SpringCloud Alibaba的开源贡献。作为国内主流的配置、注册中心,Nacos在国内多数微服务公司都有使用,感兴趣的可以阅读一下本节推荐资料,笔者整理归纳在本文第8章节。
SpringCloud微服务实战——搭建企业级开发框架(四十三):多租户可配置的电子邮件发送系统设计与实现
SpringBoot提供了基于JavaMail的starter,我们只要按照官方的说明配置邮件服务器信息,即可使我们的系统拥有发送电子邮件的功能。但是,在我们GitEgg开发框架的实际业务开发过程中,有两个问题需要解决:一个是SpringBoot邮箱服务器的配置是配置在配置文件中的,不支持灵活的界面配置。另外一个是我们的开发框架需要支持多租户,那么此时需要对SpringBoot提供的邮件发送功能进行扩展,以满足我们的需求。
03-微服务技术栈(基础):SpringCloud工程部署启动
本节笔者带领大家完成了SpringCloud工程从0->1的搭建,当然你不想搭建也可以直接采用方案一,二者等效,至此读者们完成了一个微服务工程的搭建、部署、访问。同时在本节最后一章,笔者基于RestTemplate发起的http请求实现远程调用,实现当A系统想要获取B系统数据时的跨系统数据交互。然而RESTful API访问并不是微服务的唯一解决方案,如Dubbo的交互一样可以实现,希望读者们能不限于此。
SpringCloud学习(五):微服务注册进eureka集群
试想:如果注册中心只有一个eureka服务,假如它出故障了,会导致整个为服务环境不可用。 所以,为了实现高可用,我们需要搭建Eureka注册中心集群 ,实现负载均衡+故障容错
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(九)文件服务篇(1):minio 单机与集群搭建
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(九)文件服务篇(1):minio 单机与集群搭建
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(3) -oauth2 登陆源码分析以及扩展添加tenantId属性
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(3) -oauth2 登陆源码分析以及扩展添加tenantId属性
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(七) 开发环境使用轻量级在线文档解决知识分享问题
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(七) 开发环境使用轻量级在线文档解决知识分享问题
国王小组:数字货币交易所搭建|微服务架构运用理解
核心思想:分而治之,将一个应用拆分成多个松耦合的服务,这些服务之间通过某种协议(REST、RPC等)进行互相协作,其中一个关键点就是各服务之间的松耦合,各服务之间通过一种“标准”的协议进行沟通,不需要理解对方服务的实现逻辑、实现方式,只要在对方不影响自己所提供的服务功能即可。