
微服务系列核心技术
常耀斌
CTO,AI科学家。2024年,清华大学出版社发行《大数据架构之道和项目实战》《AI赋能企业数字化转型》《深度学习和大模型实战》
展开
-
Spring Cloud架构的各个组件的原理分析(最详细讲解)
微服务的应用场景和核心竞争力:降低耦合:每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。原创 2020-09-07 15:22:20 · 2648 阅读 · 0 评论 -
SpringBoot 实战系列之五:SpringBoot+Mongodb的集成实战
1. 安装mongoDBmongoDB下载下载网址是:https://www.mongoDB.com/-center#community。 直接下载msi安装版:mongoDB-win32-x86_64-2008plus-ssl-3.4.3-signed.msimongoDB安装 创建data目录和log目录,我把mongoDB安装到E:\mongoDB下,在本目录创建data,data下创建db文件夹和log文件夹。安装为Windows服务进入E:\mongoDB\bin 按shi...原创 2020-08-24 16:05:38 · 846 阅读 · 0 评论 -
SpringBoot 实战系列之四:SpringBoot+Shiro的安全认证和授权
Shiro是一个安全框架,是Apache的一个子项目。shiro提供了:认证、授权、加密、会话管理、与web集成、缓存等模块。 先介绍概念: Subject:主体,可以看到主体可以是任何与应用交互的“用户”。 SecurityManager:相当于 SpringMVC 中的 DispatcherServlet 或者 Struts2 中的FilterDispatcher。它是 Shiro 的核心,所有具体的交互都通过 SecurityManager 进行控制。它管理着所有 Subject、且负原创 2020-08-21 14:18:40 · 694 阅读 · 0 评论 -
SpringBoot 实战系列之三:SpringBoot+RabbitMQ集成
第一步:需要下载安装erlong环境。地址是:http://www.erlang.org/downloads里面有windows和linux我本人测试环境是windows所以下载的是OTP 20.2 Windows 64-bit Binary File第二步:下载安装rabbitMQ同理下载windows版本的。下载地址:http://www.rabbitmq.com/download.html,选择window installer安装完成后,进入C:\Program Files\Rabbi原创 2020-08-14 11:51:44 · 592 阅读 · 0 评论 -
快速了解SpringBoot微服务的工作原理和配置方法
在大数据和互联网高速发展时期,平台系统如何满足需求变化和用户增长快的通用需求?从系统架构设计的角度来说,构建灵活、易扩展的系统来应对日新月异的需求变化;从系统质量特性的角度来说,构建可伸缩性、高可用性系统才能满足用户快速增长的需求。微架构通过组件化和服务化和设计思想,可以解决独立部署和快速迭代开发的变化需求。Spring Boot 是 Java 领域最优秀的微服务架构代表,就是基于 Spring ...原创 2018-08-16 09:43:47 · 1249 阅读 · 0 评论 -
微服务为什么迅速成为主流技术?
微服务是系统架构的一种设计风格,它是把一个独立的大系统拆分成多个小服务,让这些小服务都在各自的进程中运行,服务之间通过安全的Http Restful 接口进行协同通信。微服务的产生是为解决一个单体应用在庞大业务发展后导致的不可维护性,当开发团队在敏捷开发和部署中举步维艰时,最主要问题就是这个应用太复杂,以至于任何单个开发者都不可能独自承担。总结单体应用的主要存在问题:一是在不同模块发生资源冲突时,...原创 2018-08-15 09:40:25 · 1036 阅读 · 0 评论 -
SpringBoot和Mongodb集成的权威总结
package com.cloud.storage.dao;import java.util.List;import org.apache.log4j.Logger;import org.springframework.data.mongodb.core.MongoTemplate;import org.springframework.data.mongodb.core.query.Q...原创 2018-08-13 10:20:22 · 948 阅读 · 0 评论 -
Spring Boot的pom.xml配置
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://Maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://Maven.apache.原创 2018-07-25 08:58:39 · 398 阅读 · 0 评论 -
springCloud微服务入门关键组件
springCloud是基于SpringBoot的一整套实现微服务的框架。他提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是, 跟spring boot框架一起使用的话,会让你开发微服务架构的云服务非常好的方便。 SpringBoot旨在简化创建产品级的 Spring 应用和服务,简...原创 2018-08-09 09:34:40 · 400 阅读 · 0 评论 -
Spring-boot注解详解
maven版本和spring-boot版本区别Maven版本的mongodb.properties以及mongodb.xml在boot版本已删除,取代的是在boot的核心配置文件中增加在boot版本中新增springboot的启动加载类以及hbase的配置类删除了maven版本关于hbase的配置文件hbase.xml以及hbase-site...原创 2018-08-03 09:18:47 · 1678 阅读 · 1 评论 -
微服务SpringCloud的平台架构及原理分析
需求分析:•庞大的业务要拆分为多个服务•每个服务要独立演进•服务之间互相调用或通信•非功能性(高并发+高可用+高可扩展)需求强烈-亿万级用户规模解决方案:•分布式服务治理-SpringCloud/Dubbo•微服务:平台服务和应用服务的架构要分层并模块化设计•消息中间件+消息总线(MQ/Kafka/ZooKeeper)+API•借力(组件化+集群+成熟的平台)...原创 2018-12-17 09:52:38 · 362 阅读 · 0 评论 -
深入分析微服务架构演进思想
计算机发展史上的12件大事如下,之后就是微服务了。1. 1936.5 图灵机模型2. 1945.6冯诺依曼结构3. 1984.1 System 1.04. 1991.8 Linux5. 1994.10网景浏览器6. 1995.5 Mysql7. 1996.12 Java 1.28. 2006.1 Hadoop9. 2006.3 Amazon S310.200...原创 2018-12-17 10:50:57 · 370 阅读 · 0 评论 -
分布式事务和XA规范的原理分析
分布式事务简介 分布式事务是指会涉及到操作多个数据库(或者提供事务语义的系统,如JMS)的事务。其实就是将对同一数据库事务的概念扩大到了对多个数据库的事务。目的是为了保证分布式系统中事务操作的原子性。分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务的决定必须产生统一的结果(全部提交或全部回滚)。 通常把一个数据库内部的事务处理,...原创 2018-08-24 14:29:55 · 2243 阅读 · 0 评论 -
RocketMQ中间件实现分布式事务原理分析
案例:Bob向Smith转账,那我们到底是先发送消息,还是先执行扣款操作? 好像都可能会出问题。如果先发消息,扣款操作失败,那么Smith的账户里面会多出一笔钱。反过来,如果先执行扣款操作,后发送消息,那有可能扣款成功了但是消息没发出去,Smith收不到钱。除了上面介绍的通过异常捕获和回滚的方式外,还有没有其他的思路呢?下面以阿里巴巴的RocketMQ中间件为例,分析下其设计和实现思路...原创 2018-08-24 14:56:44 · 895 阅读 · 0 评论 -
Dubbo分布式服务的工作原理深度分析
Dubbo每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。Dubbo是一个阿里巴巴开源出来的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含:远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错:...原创 2018-08-27 09:41:44 · 1266 阅读 · 0 评论 -
Spring Cloud Eureka原理和案例详解(第二课)
服务治理架构服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装。主要负责完成微服务架构中的服务治理功能。 服务注册注册服务:构建一个注册中心,每个服务单元向注册中心登记自己提供的服务:包括服...原创 2018-09-10 16:33:28 · 365 阅读 · 0 评论 -
Spring Cloud微服务构建(第一课)
1. 构建微服务Maven工程,三大板块:主入口Application,配置目录resouces和测试单元test2.编写pom.xml,<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3....原创 2018-09-10 16:03:39 · 201 阅读 · 0 评论 -
微服务的构建和挑战的应对策略之二
挑战之二:高可用,配置管理,权限控制,在线更新配置(4)Spring Cloud Hystrix(统一容错处理)我们在(1)、(2)、(3)中知道了使用Eureka进行服务的注册和发现,使用Ribbon实现服务的负载均衡调用,还知道了使用Feign可以简化我们的编码。但是,这些还不足以实现一个高可用的微服务架构。例如:当有一个服务出现了故障,而服务的调用方不知道服务出现故障,若此时调用...原创 2018-09-07 10:21:22 · 265 阅读 · 0 评论 -
微服务的构建和挑战的应对策略之一
微服务带来的挑战之一:业务微服务化(针对接口采用设计模式),服务注册和调用,负载均衡,服务调用简化。运维的调整,需要自动化,比如数据迁移,数据采集,业务调度,消息传递等都是需要运维自动化 接口一致性(接口隔离和单一原则/提取公共方法为接口的依赖倒转原则/抽象父类的开闭原则/通过消息中间件的迪米特原则),业务逻辑依赖,需要考虑如下应用场景来解决:一是开闭原则(Open Close Princ...原创 2018-09-07 10:02:56 · 909 阅读 · 0 评论 -
Spring Cloud Zuul的动态路由和动态过滤器实现(第三课)
Zuul的作用就是路由转发和过滤, 即将请求转发到微服务或拦截请求; Zuul默认集成了负载均衡功能。架构图如下动态路由方案:主应用: @Bean @RefreshScope @ConfigurationProperties("zuul") public ZuulProperties zuulProperties() { return...原创 2018-09-06 17:44:18 · 902 阅读 · 1 评论 -
Spring Cloud Hystrix断路器的原理和案例实战(第四课)
原理:hystrix通过服务隔离、熔断(也可以称为断路)、降级等手段控制依赖服务的延迟与失败。雪崩效应:是一种因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程正常情况下的服务:一服务出现异常,拖垮整个服务链路,消耗整个线程队列,造成服务不可用,资源耗尽:硬件故障:硬件损坏造成的服务器主机宕机, 网络硬件故障造成的服务提供者的不可访问 程序Bug 缓存击穿:缓存击...原创 2018-09-06 17:02:17 · 482 阅读 · 0 评论 -
Spring Cloud Config分布式配置中心案例实战(第五课)
当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取新的配置。其架构原理图大致如下: 我们将配置文件放入git或者svn等服务中,通过一个Config Server服务来获取git中的配置数据,而我们需要使用...原创 2018-09-06 16:34:02 · 385 阅读 · 0 评论 -
Spring Cloud Fegin服务调用实战
构建Spring Cloud Fegin服务调用开发如下:构建工程SpringBoot,名称为feign-consumer,配置pom.xml,关键是引入spring-cloud-starter-eureka和spring-cloud-starter-依赖,代码如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns=...原创 2018-09-05 11:25:30 · 696 阅读 · 0 评论 -
微服务改造现有业务的策略和思考
微服务架构的契机业务发展快,代码规模爆发 接口定义不规范 业务耦合紧密 共用数据库,导致读写效率低和维护成本高 耦合第三方业务,比如支付和小视频等 数据库设计混乱微服务解决方案微服务的好处:微服务的主流架构微服务的管理完全实现了分布式部署架构,系统与微服务组件,常容易扩展 以服务为中心,构建了微服务组件 系统、微服务组件、缓存、MQ消息队列、DB等,解决了单...原创 2018-09-05 10:43:13 · 863 阅读 · 0 评论 -
分布式事务二阶段提交的处理方案
分布式事务的应用场景支付最经典的场景就是支付了,一笔支付,是对买家账户进行扣款,同时对卖家账户进行加钱,这些操作必须在一个事务里执行,要么全部成功,要么全部失败。而对于买家账户属于买家中心,对应的是买家数据库,而卖家账户属于卖家中心,对应的是卖家数据库,对不同数据库的操作必然需要引入分布式事务。在线下单买家在电商平台下单,往往会涉及到两个动作,一个是扣库存,第二个是更新订单状态,库存...原创 2018-09-03 17:28:10 · 1006 阅读 · 0 评论 -
跨域的Dubbo服务调用实践
首先熟悉一下Dubbo的工作原理,四个核心组件,组件图如下:Provider:暴露服务方称之为“服务提供者”。Consumer:调用远程服务方称之为“服务消费者”。Registry:服务注册与发现的中心目录服务称之为“服务注册中心”。Monitor:统计服务的调用次数和调用时间的日志服务称之为“服务监控中心”。然后,思考Dubbo如何实现跨域工作(就是全球化服务调用)? 使...原创 2018-09-04 10:25:23 · 2357 阅读 · 0 评论 -
Dubbo整合Zookeeper、SpringMVC开发消费者服务
Zookeeper作为Dubbo服务的注册中心, Zookeeper一个分布式的服务框架,是树型的目录服务的数据存储,能做到集群管理数据 ,这里能很好的作为Dubbo服务的注册中心,Dubbo能Zookeeper做到集群部署,当提供者出现断电等异常停机时,Zookeeper注册中心能自动删除提供者信息,当提供者重启时,能自动恢复注册数据,以及订阅请求。我们先在linux上安装Zookeep...原创 2018-08-27 10:04:31 · 317 阅读 · 0 评论 -
Spring Cloud 组件及核心架构研究
Spring Cloud 为开发人员提供了一些可以用于快速构建分布式系统通用模式的工具(例如:配置管理、服务注册与发现、断路器、智能路由、微代理、控制总线)。分布式系统的协调趋于一些模版模式, 并且,使用Spring Cloud使开发人员可以快速创建实现了这些模式的服务和应用。 1:把整个系统根据业务拆分成几个子系统。2:每个子系统可以部署多个应用,多个应用之间使用负载均衡。3...原创 2018-09-11 16:56:21 · 549 阅读 · 0 评论