eureka

企业分布式微服务云架构技术分享 Spring Cloud + Spring Boot + Mybatis

两盒软妹~` 提交于 2021-01-02 07:06:47
1. 介绍 Commonservice-system是一个大型分布式、微服务、面向企业的JavaEE体系快速研发平台,基于模块化、服务化、原子化、热插拔的设计思想,使用成熟领先的无商业限制的主流开源技术构建。采用服务化的组件开发模式,可实现复杂的业务功能。提供驱动式开发模式,整合内置的代码生成器,将JavaEE开发效率提高5倍以上,减少50%的代码开发量,解决80%的重复工作,让开发者更关注业务逻辑。使用Maven进行项目的构建管理,采用Jenkins进行持续集成,主要定位于大型分布式企业系统或大型分布式互联网产品的架构。 2. 使用技术 SOA服务框架:SpringCloud 、SpringBoot、RestFul等 分布式缓存:Redis 模块化管理:Maven 数据库连接池:Alibaba Druid 核心框架:Spring framework、SpringBoot 持久层框架:MyBatis 安全框架:Apache Shiro 服务端验证:Hibernate Validator 任务调度:quartz 日志管理:SLF4J 1.7、Log4j 客户端验证:JQuery Validation 动态页签:easyuitab 前端框架:Bootstrap、Vue 3. 设计思想 分布式、微服务、云架构 JAVA语言开发、跨平台、高性能、高可用、安全、服务化、模块化、组件化

SpringCloud之Config

 ̄綄美尐妖づ 提交于 2021-01-02 02:25:57
【 前面的话 】本文的某些知识依赖我的 微服务系列文章 ,如果没有看过可以先移步去看一下。在前面的应用当中,我们所有的配置都是写在 yaml 配置文件当中的,这样就会造成几个问题:安全、统一管理等等。而SpringCloud也是考虑到这一点,给出的方案就是 Spring Cloud Config 。 壹、Config的简介 Spring Cloud Config是Spring Cloud团队创建的一个全新项目,用来为分布式系统中的基础设施和微服务应用提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口;而客户端则是微服务架构中的各个微服务应用或基础设施,它们通过指定的配置中心来管理应用资源与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。Spring Cloud Config实现了对服务端和客户端中环境变量和属性配置的抽象映射,所以它除了适用于Spring构建的应用程序之外,也可以在任何其他语言运行的应用程序中使用。由于Spring Cloud Config实现的配置中心默认采用Git来存储配置信息,所以使用Spring Cloud Config构建的配置服务器,天然就支持对微服务应用配置信息的版本管理

kubernetes ingress-nginx原理

僤鯓⒐⒋嵵緔 提交于 2020-12-29 18:38:47
Ingress 英文翻译 进入;进入权;进食 ,更准确的讲就是 入口 ,即外部流量进入 k8s 集群必经之口。这道大门到底有什么作用?我们如何使用 Ingress ? k8s 又是如何进行服务发现的呢?先看一张图: 原理 虽然 k8s 集群内部署的 pod 、 server 都有自己的 IP ,但是却无法提供外网访问,以前我们可以通过监听 NodePort 的方式暴露服务,但是这种方式并不灵活,生产环境也不建议使用。 Ingresss 是 k8s 集群中的一个 API 资源对象,扮演边缘路由器(edge router)的角色,也可以理解为 集群防火墙 、 集群网关 ,我们可以 自定义路由规则 来转发、管理、暴露服务(一组pod),非常灵活,生产环境建议使用这种方式。另外 LoadBlancer 也可以暴露服务,不过这种方式需要向云平台申请负债均衡器;虽然目前很多云平台都支持,但是这种方式深度耦合了云平台,所以你懂的。 首先我们来思考用传统的 web 服务器,比如 Nginx ,如何处理这种场景? Nginx 充当一个反向代理服务器拦截外部请求,读取路由规则配置,转发相应的请求到后端服务。 kubernetes 处理这种场景时,涉及到三个组件 : 反向代理 web 服务器 负责拦截外部请求,比如 Nginx 、 Apache 、 traefik 等等。我一般以 Deployment

SpringCloud-断路器 Hystrix

元气小坏坏 提交于 2020-12-29 02:31:15
简介 Hystrix 是 Netflix 的一个开源项目,它能够在服务失效的情况下,通过隔离系统依赖服务的方式,防止服务级联失败,造成服务雪崩。同时Hystrix 还提供了失败回滚机制,使得系统能够更快的从异常中恢复。Hystrix 为服务间调用提供了保护和控制。 Hystrix 具有的功能如下: 当通过客户端调用服务出现高延迟或者调用失败时,能够为系统提供保护机制 在复杂的分布式场景下,可以防止服务雪崩效应 提供快速失败(Fail Fast) 同时能够快速恢复 提供失败回滚和优雅的服务降级机制 提供近实时的监控、报警和运维控制手段 Hystrix 在实际应用过程中的使用方式很丰富,可以通过注解,也可以通过集成 HystrixCommand 和HystrixObservableCommand 。本篇将通过案例简单说明下说用方式。 环境准备 类别 值 JDK 1.8.0_162 SOFABoot/SpringBoot 3.0.0 /2.0.x.RELEASE SpringCloud Finchley.RC1 IDE IDEA 工程背景 本节将会创建一个 sofa-hystrix-client 工程,通过 Spring Cloud 提供的负载均衡器 hystrix 实现服务的熔断降级。 新建 sofa-hystrix-client 本工程继续使用《SpringCloud-Eureka

【微服务架构】SpringCloud之Hystrix断路器(六)

怎甘沉沦 提交于 2020-12-29 01:58:55
一:什么是Hystrix 在分布式环境中,许多服务依赖项中的一些将不可避免地失败。Hystrix是一个库,通过添加延迟容差和容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,停止其间的级联故障以及提供回退选项,从而提高系统的整体弹性。 Hystrix旨在执行以下操作 1:对通过第三方客户端库访问(通常通过网络)的依赖关系提供保护并控制延迟和故障。 2:隔离复杂分布式系统中的级联故障。 3:快速发现故障,尽快恢复。 4:回退,尽可能优雅地降级。 5:启用近实时监控,警报和操作控制。 二:为什么需要Hystrix? 大型分布式系统中,一个客户端或者服务依赖外部服务,如果一个服务宕了,那么由于我们设置了服务调用系统超时时间,势必会影响相应时间,在高并发的情况下大多数服务器的线程池就出现阻塞(BLOCK),影响整个线上服务的稳定性。 (图片官方图片) 当一切都健康时,请求可以看起来像这样 当许多后端服务系统中的一个宕掉时,整个用户请求: 如果多个客户端调用同一个异常服务的时候,出现的情况是: 三:Hystrix解决什么问题? 分布式架构中的应用程序具有几十个依赖关系,每个依赖关系在某个时刻将不可避免的出现异常。如果应用程序不与这些外部故障隔离,则可能出现线程池阻塞,引起系统雪崩。 1 2 3 4 例如,对于依赖 30 个服务的应用程序

SpringBoot加载外部依赖

不打扰是莪最后的温柔 提交于 2020-12-24 06:01:39
背景 公司一个项目的大数据平台进行改造,之前使用Structured Streaming作为实时计算框架,需要替换为替换为Kafka Streams,并使用SpringBoot包装,使其可以纳入微服务体系。然而由于之前并没有接触过SpringFramework相关技术,并且项目工期较为紧张,因此只好花了2天时间看了看Spring和SpringBoot,并且在改造过程中沿用大部分原有代码,最后套上SpringBoot的壳子(就是基本不使用Spring Data相关的封装和DI、AOP这些特性,只是在启动类上添加 @SpringBootApplication 注解,并在 main() 方法里面使用 SpringApplication.run() 方式启动)。 问题 然后在部署过程中就遇到了一个比较蛋疼的问题:因为遗留代码的关系,部分配置项的名称是自定义的,并使用 java.util.ResourceBundle 的 getString() 来读取,而为了让项目可以注册到Eureka以及使用SpringBoot默认的日志配置,在配置文件中配置了 eureka.client.serviceUrl.defaultZone 以及 logging.file 等SpringBoot内置的配置项,并使用SpringBoot内置的配置读取方式读取。也就是在一个应用程序中

【1.5】SpringCloud入门之Eureka consumer OpenFeign

让人想犯罪 __ 提交于 2020-12-24 01:42:22
用maven创建一个eureka-consumer-feign 1.引入springcloud对应的pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> 2.新建启动类,服务调用类,请求入口类 2.1 EurekaConsumerFeignApplication package com.pimee; import org.springframework.boot.SpringApplication;

把 Spring Cloud 给拆了!详解每个组件的作用,值得收藏!

笑着哭i 提交于 2020-12-23 19:05:30
目录 Eureka Ribbon和Feign Zuul Hystrix Config 总结如下 我们先认识一下SpringCloud的各个组件,然后知其所以然。 原理讲解前,先看一个最经典的业务场景,如开发一个电商网站,要实现支付订单的功能,流程如下: 创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付” 扣减相应的商品库存 通知仓储中心,进行发货 给用户的这次购物增加相应的积分 如上,微服务的应用场景和核心竞争力: 降低耦合:每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。由于体积小、复杂度低,每个微服务可由一个小规模开发团队完全掌控,易于保持高可维护性和开发效率。 独立部署:由于微服务具备独立的运行进程,所以每个微服务也可以独立部署。当某个微服务发生变更时无需编译、部署整个应用。由微服务组成的应用相当于具备一系列可并行的发布流程,使得发布更加高效,同时降低对生产环境所造成的风险,最终缩短应用交付周期。 选型灵活:微服务架构下,技术选型是去中心化的。每个团队可以根据自身服务的需求和行业发展的现状,自由选择最适合的技术栈。由于每个微服务相对简单,故需要对技术栈进行升级时所面临的风险就较低,甚至完全重构一个微服务也是可行的。 容错机制:当某一组建发生故障时,在单一进程的传统架构下,故障很有可能在进程内扩散,形成应用全局性的不可用

MSHA x Chaos 容灾高可用实践

我是研究僧i 提交于 2020-12-23 18:36:53
前言 由于外部环境的复杂以及硬件的不可靠,互联网服务的高可用面临着巨大的挑战,由于断网、断电等事故导致的各大互联网公司服务不可用的案例也不在少数。业务不可用,小到带来经济损失影响企业口碑,大到微信、支付宝这些国民级应用,影响国计民生。面对难以避免的天灾人祸,容灾架构的建设就成为了数字化企业的迫切诉求。 2020 年 12 月份,阿里云应用高可用产品 AHAS(Application High Availability Service)发布了新的功能模块 AHAS-MSHA,它是在阿⾥巴巴电商业务环境演进出来的多活容灾架构解决⽅案。本篇文章我们首先介绍容灾领域的几个重要概念,然后将结合一个的电商微服务案例,分享一下如何基于 AHAS 的异地多活能力(AHAS-MSHA)和混沌工程能力(AHAS-Chaos)帮助业务实现容灾架构的高可用实践。 容灾与评价指标 1. 什么是容灾? 容灾(Disaster Tolerance)是指在相隔较远的异地,建立两套或多套功能相同的系统,系统之间可以相互进行健康状态监视和功能切换,当一处系统因意外(如火灾、洪水、地震、人为蓄意破坏等)停止工作时,整个应用系统可以切换到另一处,使得该系统功能可以继续正常工作。 2. 容灾能力如何评估? 容灾系统主要为了在灾难发生时业务不发生中断,那么容灾能力如何评估和量化呢

spring boot+spring cloud面试笔记

南楼画角 提交于 2020-12-19 07:52:07
什么是SpringBoot? 1、用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件) 2、创建独立的spring引用程序main方法运行 3、嵌入Tomcat无需部署war包,直接打成jar包nohup java -jar – & 启动就好 4、简化了maven的配置 4、自动配置spring添加对应的starter自动化配置 SpringBoot常用的starter: 1、spring-boot-starter-web(嵌入Tomcat和web开发需要的servlet和jsp支持) 2、spring-boot-starter-data-jpa(数据库支持) 3、spring-boot-starter-data-Redis(Redis支持) 4、spring-boot-starter-data-solr(solr搜索应用框架支持) 5、mybatis-spring-boot-starter(第三方mybatis集成starter) SpringBoot自动配置原理: 1、@EnableAutoConfiguration这个注解会"猜"你将如何配置spring,前提是你已经添加了jar依赖项,如果spring-boot-starter-web已经添加Tomcat和SpringMVC