启动速度提升 10 倍:Apache Dubbo 静态化方案深入解析
Apache Dubbo 集成了 GraalVM Native Image 后 ,Dubbo 应用能够做到毫秒级启动,启动速度降低了十倍、资源损耗降低了四倍,为降本增效提供了更多的想象空间。
为什么 Higress 是 Knative 入口网关的最佳实践?
本文介绍了 Knative 网络层原理,Higress 对接 Knative 服务的两种方式,并给出 Higress 成为 Knative 入口网关的最佳实践。
Apache Dubbo 云原生可观测性的探索与实践
Apache Dubbo 已接入指标、链路、日志等多维度观测能力,助力云原生实践,本文将介绍 Dubbo 可观测性的探索与实践。
基于SpringCloud封装统一的异常处理
在 Spring Cloud 中,可以通过自定义异常处理器来封装统一的异常处理逻辑。异常处理器能够捕获并处理应用程序中的异常,然后返回适当的错误响应。以下是一个基于 Spring Cloud 的统一异常处理的示例
云原生微服务应用的平台工程实践
微服务是一个广泛使用的应用架构,如何使得微服务应用云原生化是近些年一直在演进的课题。本文从云原生应用平台的角度分析云原生化改造中存在的问题,并提出平台工程在开发、测试和 CI/CD 等场景的最佳实践。
源码解析Spring Boot 的启动流程
最近有位开发同学说面试被问到Spring Boot 的启动流程,以及被问到Spring Boot 的嵌入式Web容器是什么时候加载的。如何加载的。是怎么无缝切换的。这些问题,其实回答起来也是比较复杂的。我们今天就从 `SpringApplication.run(Application.class, args);`入口,逐渐向下看下执行流程。来试着回答一下前面这两个问题。后面关于SpringBoot 的web容器可以无缝随意切换为`jetty`,`undertow.`.这个问题的回答涉及到Spring Boot是如何设计WebServer的。我们后续专门讲解一下。
这可能是2023年把微服务讲的最全了:SpringBoot+Cloud+Docker
最近几年,微服务可谓是大行其道。在业务模型不完善,超大规模流量的冲击的情况下,许多企业纷纷抛弃了传统的单体架构,拥抱微服务。这种模式具备独立开发、独立部署、可扩展性、可重用性的优点的同时,也带来这样一个问题:开发、运维的复杂性提高。有人感觉微服务越做越不方便管理。
微服务的Feign到底是什么
Feign是什么 分区是一种数据库优化技术,它可以将大表按照一定的规则分成多个小表,从而提高查询和维护的效率。在分区的过程中,数据库会将数据按照分区规则分配到不同的分区中,并且可以在分区中使用索引和其他优化技术来提高查询效率。
微服务实战03-注册数据服务
EurekaServer ,它扮演的角色是注册中心,用于注册各种微服务,以便于其他微服务找到和访问。有了EurekaServer,还需要一些微服务,注册到EurekaServer上去。 这一节,我们来写一个注册微服务。为了简单起见,我们不用数据库,用java来模拟即可。
微服务为什么要使用网关服务
不同的微服务一般会有不同的网络地址,但 web 端或 APP 端需要调用多个服务的接口才能完成一个业务需求。在这种客户端直接与各个服务通信的架构时,会有以下问题: • 客户端需要维护很多服务的请求地址; • 客户端会多次请求不同的微服务,增加了客户端的复杂性; • 存在跨域请求,处理相对复杂; • 认证复杂,每个服务都需要独立认证; • 随着项目的迭代,可能需要重新划分微服务(多个微服务合并成一个或将一个服务拆分成多个),在客户端直接与微服务通信时,重构将会难以实施;
构建微服务:使用 API 网关
当您选择将应用程序构建为一组微服务时,您需要决定应用程序的客户端将如何与微服务交互。对于单体应用程序,只有一组(通常是复制的、负载平衡的)端点。然而,在微服务架构中,每个微服务都暴露了一组通常是细粒度的端点。在本文中,我们研究了这如何影响客户端到应用程序的通信,并提出了一种使用API 网关的方法。
Higress GitHub star 突破 1k,来自社区开发者和用户的寄语
一个遵循开源Ingress/Gateway API标准,提供流量调度、服务治理、安全防护三合一的高集成、易使用、易扩展、热更新的下一代云原生网关。
50-微服务技术栈(高级):分布式协调服务zookeeper源码篇(Leader选举)
前面学习了Zookeeper相关细节,其中对于集群启动而言,很重要的一部分就是Leader选举,接着就开始深入学习Leader选举。
46-微服务技术栈(高级):分布式协调服务zookeeper源码篇(Watcher机制-1)
前面已经分析了Zookeeper持久话相关的类,下面接着分析Zookeeper中的Watcher机制所涉及到的类。
43-微服务技术栈(高级):分布式协调服务zookeeper源码篇(序列化)
在完成了前面的理论学习后,现在可以从源码角度来解析Zookeeper的细节,首先笔者想从序列化入手,因为在网络通信、数据存储中都用到了序列化,下面开始分析。
41-微服务技术栈(高级):分布式搜索引擎ElasticSearch(RestClient文档处理[搜索/分页/高亮/地理坐标])
在前面的学习中,笔者带领大家完成海量数据导入ES,实现了ES基本的存储功能,但是我们知道ES最擅长的还是搜索、数据分析。所以本节笔者将继续带领大家研究一下ES的数据搜索功能,同上节一样,继续分别采用DSL和RestClient实现搜索。
38-微服务技术栈(高级):分布式搜索引擎ElasticSearch(安装ES/Kibana/IK)
随着应用数据的陡增,传统关系型数据库如MySQL/Oracle/RDS等,在处理海量数据的关系映射、数据查询场景还是有性能瓶颈。16年左右巅峰的Solr技术,随着近几年的技术发展也逐步被ES所替代。本节开始我们将花费5节的课程时间,带领读者朋友们认识ES、完成ES常见API的使用的代码演练。
34-微服务技术栈(高级):微服务保护Sentinel
应用的硬件、软件架构在涉及到部署时,一般会根据实际请求量做一定的压力测试,以测试系统稳定性、健壮性,避免后续线上未知故障。假设在一个电商的秒杀场景下,订单中心本身能够承载的QPS预设是10W,因为活动的火爆导致流量瞬时达到100W,此时订单中心因无法承载其10倍的请求将会崩溃,那么对于整个分布式架构系统会产生什么问题呢?本节我们将借助于Sentinel的流量控制、隔离降级来解决上述分布式架构中常见的雪崩问题。
19-微服务技术栈(高级):MQ消息可靠性
消息中间件,作为分布式系统中必不可少的一部分,在前面我们学习过其基本的消息发送、消费(跳转链接),但是读者朋友们肯定也知道,真正的生产环境可不是简单的发送消息这么简单。如何避免消息丢失?如何满足特殊场景下的消息延迟消费?如何解决消费能力不足?如何搭建集群?等等 本节笔者将从消息的可靠性出发,解决消息不丢失的问题。同时借助TTL实现延迟消息,惰性队列解决消息堆积问题,最后完成集群搭建以实现生产环境真正的高可用。
从分布式到微服务:深入理解网络,网络传输中的对象序列化问题
仅仅懂了Socket编程还不够,因为我们不是简单地写一个发送字符串的Hello World程序,需要实现复杂的对象实例传输,因此,如何将一个对象实例编码成为高效的二进制数据报文传输到对端,并且正确地“还原”出来,就是一个专业的技术问题了。
09-微服务技术栈(基础):Nacos配置中心
上一节我们借助于Nacos实现注册中心,完美替换了Eureka在项目之初的功能,开始本章节之前我们一起回忆下Nacos实现注册中心的关键步骤 1. 引入springcloud-alibaba/nacos-discovery依赖 2. 去除原eureka依赖、去除配置文件中eureka注册信息 3. 新增nacos注册信息:spring.cloud.nacos.server-addr:localhost:8848 4. 重启项目并验证 在此基础之上我们验证了Nacos的负载均衡策略、权重控制、环境隔离等信息,希望大家还能有点印象。
MSE 诊断利器上线
mseutil 未来还会支持更多的MSE子产品以及更细粒度的,更智能的诊断能力,包括客户端到 MSE 实例的网络报文分析,客户端负载状态分析,具体应用的资源占用水平以及 GC 分析等能力,帮助用户更便捷的排查在使用 MSE 产品过程中遇到的问题,提升运维效率。
SpringCloud学习(六):微服务集群配置
在上文中我们实现了eureka的集群,就相当于用户、服务和中间商中,我们连系了多个中间商,这样假如一个中间商跑路了,我们还能够通过其他中间商访问到服务。 那么,假如服务坏了呢?肯定不能只有一个服务,我们也需要给他找几个“备胎” 所以,我们需要实现服务的集群
SpringCloud学习(五):微服务注册进eureka集群
试想:如果注册中心只有一个eureka服务,假如它出故障了,会导致整个为服务环境不可用。 所以,为了实现高可用,我们需要搭建Eureka注册中心集群 ,实现负载均衡+故障容错
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十三)rocketmq 篇(2):路由注册,消息发送核心流程原理
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十三)rocketmq 篇(2):路由注册,消息发送核心流程原理