Spring Cloud

微服务开发与治理(一)

梦想与她 提交于 2020-07-27 09:33:28
前言 微服务架构与治理实战。微服务架构目前已经成为主流的互联网技术架构方案,在项目初始阶段就采用了微服务架构来开发和部署线上服务,经过一年多的实战演变,目前我们几人的开发团队,维护和管理数十个微服务,实现了一套快速开发,部署,以及服务治理和追踪的技术栈。这次我将主要给大家分享我们用到的技术内容以及开源产品的一些使用经验。主要是从系统构建,系统从0到1构建过程、微服务架构怎么样、微服务我们怎么做追踪和治理的,以及我们遇到的开源技术栈和一些总结。 一、系统从0->1的构建 一开始构建我们的系统,做一个互联网项目,部署这些东西的时候,第一个问题就是用什么样的架构创建我们这套系统。我们选了SpringCloud,因为SpringCloud确实在这些方面有些优势。 Why SpringCloud? 部署更轻量 第一,SpringCloud是基于SpringBoot的一整套实现微服务的 框架 。它提供了微服务开发所需的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等组件。最重要的是,基于SpringBoot,会让开发微服务架构非常方便。在编译和部署上面,时间上面的开销也非常少,这就带来了时间上的节省,开发效率更高。 第二,SpringCloud的源码更可控

阿里巴巴最新面试分享:Java虚拟机+数据库+Spring+多线程+微服务

左心房为你撑大大i 提交于 2020-07-27 09:08:51
给大家分享阿里巴巴核心部门的java面试题,Java版本升级之后,我重新整理出了一份面试的PDF文档! 由于篇幅有限,这边只是给大家看到了一部分知识点解析。知识点解析做到每一个专题有广度有深度,希望各位拿到这份PDF之后好好学习,立马开始行动起来,不要做一个收藏党! 在文末会有获取方式哦!只需要您:动动小手就可以免费获取到哦!(保证免费,不然全秃!) JVM虚拟机面试题: JVM 的永久代中会发生垃圾回收么? WeakReference 与 SoftReference的区别? 在 Java 语言里,可作为 GC Roots 的对象包括以下几种? 如果一个对象的引用被设置为 null , GC 会立即释放该对象的内存么? 为什么不建议在程序中显式的声明 System.gc() ? 当出现了内存溢出,你怎么排错? 为什么要废弃永久代? 直接内存(堆外内存)与堆内存比较? JVM虚拟机面试题解析: JVM虚拟机面试题解析: 数据库: MySQL的常用SQL语句优化有哪些? MySQL索引的作用?和它的优点缺点是什么? MySQL有哪些索引(或者说索引类型有哪些)? MySQL的主键和索引有什么区别? MySQL创建索引的原则是什么? MySQL的索引在哪些情况下会失效? MySQL的索引原理是什么? MySQL的存储引擎有哪些? MySQL的最左原则是什么? MySQL的乐观锁和悲观锁?

springcloud~nacos在使用中需要注意的问题

假如想象 提交于 2020-07-27 09:02:55
配置文件问题 如果使用application命名时,需要使用 Properties 扩展名的,如果使用 yml 格式的,那你不能使用application.yml,而应该使用bootstrap.yml这种格式,如图所示,这种是无法加载配置的 使用bootstrap然后定义好扩展名,因为在nacos里我们添加的是yaml文件,,只它默认只查询 properties文件 bootstrap.yml server.port: 6060 spring: application.name: gateway profiles.active: dev bootstrap-dev.yml spring: cloud: nacos: config: server-addr: 127.0.0.1:8848 file-extension: yaml discovery: server-addr: 127.0.0.1:8848 对于nacos上的配置文件,是可以没有扩展名的 总结 :在使用yaml配置文件时,我们需要使用bootstrap做为本地配置文件的名称。 来源: oschina 链接: https://my.oschina.net/u/4258423/blog/4437278

Guava RateLimiter限流器使用示例

点点圈 提交于 2020-07-27 05:56:18
Guava中的RateLimiter可以限制单进程中某个方法的速率,本文主要介绍如何使用,实现原理请参考文档: 推荐:超详细的Guava RateLimiter限流原理解析 和 推荐:RateLimiter 源码分析(Guava 和 Sentinel 实现) 。 1 基于spring-mvc的controller测试限流 完整代码可参考: https://github.com/sxpujs/spring-cloud-examples/tree/master/rest-service 1.1 增加Maven依赖: <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>29.0-jre</version> </dependency> 1.2 AccessLimitService 限流Service类 @Service public class AccessLimitService { // 每秒发出5个令牌 RateLimiter rateLimiter = RateLimiter.create(5.0); /** * 尝试获取令牌 */ public boolean tryAcquire() { return rateLimiter.tryAcquire();

看完这10个spring 项目,我同时拿到了BAT的offer

筅森魡賤 提交于 2020-07-27 05:49:46
一、mall star 数 12.7k,项目地址: 回复“ mall ”获取源码 mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现。前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。 项目演示: 二、Cloud-Platform star 数 8k,项目地址: 回复“ cloud-platform ”获取源码 Cloud-Platform是国内首个基于Spring Cloud微服务化开发平台,具有统一授权、认证后台管理系统,其中包含具备用户管理、资源权限管理、网关API 管理等多个模块,支持多业务系统并行开发,可以作为后端服务的开发脚手架。代码简洁,架构清晰,适合学习和直接项目中使用。核心技术采用Spring Boot 2.1.2以及Spring Cloud (Greenwich.RELEASE) 相关核心组件,采用Nacos注册和配置中心,集成流量卫兵Sentinel,前端采用vue-element-admin组件。 项目模块: 项目演示: 三、微人事 star 数 3.3k,项目地址: 回复 “微人事” 获取源码

Spring Cloud Alibaba系列(四)使用gateway作为服务网关

感情迁移 提交于 2020-07-27 05:26:46
什么是网关 在微服务架构里,服务的粒度被进一步细分,各个业务服务可以被独立的设计、开发、测试、部署和管理。这时,各个独立部署单元可以用不同的开发测试团队维护,可以使用不同的编程语言和技术平台进行设计,这就要求必须使用一种语言和平台无关的服务协议作为各个单元间的通讯方式。 换句话说就是网关为所有的请求提供了统一的入口,方便我们对服务请求和响应做统一管理。 为什么要用网关 API 网关是一个处于应用程序或服务(提供 REST API 接口服务)之前的系统,用来管理授权、访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的调用者透明。 什么是gateway Spring Cloud Gateway是Spring官方基于Spring 5.0,Spring Boot 2.0和Project Reactor等技术开发的网关,Spring Cloud Gateway旨在为微服务架构提供一种简单而有效的统一的API路由管理方式。Spring Cloud Gateway作为Spring Cloud生态系中的网关,目标是替代ZUUL,其不仅提供统一的路由方式,并且基于Filter链的方式提供了网关基本的功能,例如:安全,监控/埋点,和限流等。 gateway工作原理 客户端向Spring Cloud网关发出请求。如果网关处理程序映射确定请求与路由匹配

使用java8API遍历过滤文件目录及子目录及隐藏文件

给你一囗甜甜゛ 提交于 2020-07-27 00:10:08
1. 使用 Files.list() 迭代目录及其子目录文件 Files.list() 可以迭代目录及其子目录文件 Files.list(Paths.get(".")) //当前目录 .forEach(System.out::println); 输出: .\filename1.txt .\directory1 .\filename2.txt .\Employee.java 2. 使用 filter表达式过滤文件 过滤器函数引用,isRegularFile表示普通文件 Files.list(Paths.get(".")) .filter(Files::isRegularFile) //过滤器:只保留普通文件,过滤掉文件目录 .forEach(System.out::println); 输出结果如下: .\filename1.txt .\filename2.txt .\Employee.java 也可以使用lambda表达式进行过滤 Files.list(Paths.get(".")) .filter(s -> s.startsWith("file")) //过滤器:只保留以file开头的文件及目录 .forEach(System.out::println); 3. 使用 Files.newDirectoryStream()迭代目录及其子目录文件 另一种更灵活的遍历目录的方式

SpringCloud- 第八篇 Hystrix熔断机制(五)

邮差的信 提交于 2020-07-27 00:05:04
1:雪崩效应概述 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应” 2:熔断机制概述 熔断机制是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。 在Spring Cloud框架里,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制。熔断机制的注解是@HystrixCommand。 3: 熔断类型 在Hystrix里面,熔断又分为三种情况:半熔断、熔断打开、熔断关闭 熔断打开:请求不再进行调用当前服务,内部设置时钟一般为MTTR(平均故障处理时间),当打开时长达到所设时钟则进入半熔断状态 半熔断: 部分请求根据规则调用当前服务,如果请求成功且符合规则则认为当前服务恢复正常,关闭熔断 熔断关闭: 熔断关闭不会对服务进行熔断 4: 断路器图解 5:断路器在什么情况下开始起作用 涉及到断路器的三个重要参数:快照时间窗、请求总数阀值

阿里巴巴、百度、美团都在用的 Spring Cloud 微服务架构

我的未来我决定 提交于 2020-07-26 19:03:23
后台都是在问微服务架构的面试题怎么答,想聊聊微服务架构了。 微服务架构一跃成为 IT 领域炙手可热的话题也就这两年的事,大量一线互联网公司因为庞大的业务体量和业务需求,纷纷投入了微服务架构的建设中,像阿里巴巴、百度、美团等大厂,很早就已经开始了微服务的实践和应用。 一线大厂的带动,让微服务成为了 Java 系程序员面试的必备考点。其中是否具有 Spring Cloud 技术能力的程序员,也是企业招聘中影响薪资的核心要素之一。 招聘要求基本都有微服务架构 Spring Cloud 作为所有微服务治理中最优秀的方案,其基于 Spring Boot 可实现快速集成,开发效率极高的特性,堪称中小型互联网公司的福音,更是技术未来的发展趋势。可以说不管你是什么级别,也不论你在什么公司,服务化都是你迟早要面对的难题。 面对亿级流量,怎么实现高可用限流熔断降级? Redis缓存穿透&缓存雪崩&缓存失效终极解决又是什么? 系统场景下,负载均衡调用实战怎么做? 基于事务消息的柔性分布式事务实战你会吗? 以上问题你能答到点子上吗? Spring Cloud 并不是一项复杂的技术,很多开发者都可以快速上手。但也正是简单易懂,开发者确很容易忽视注解背后的底层技术。在面试和实际架构的过程中,对技术理解肤浅、缺少细节成为无数开发者的致命伤。 最后学习Java不仅依靠自身的努力,更要站在巨人的肩膀上

Spring Boot (十): Spring Boot Admin 监控 Spring Boot 应用

一世执手 提交于 2020-07-26 17:01:34
1. 引言 ,在微服务的体系中,我们的服务数量是非常多的,这同样不方便我们人工管理,在这样的背景下,诞生了另一个开源软件,也是本篇文章要介绍的: Spring Boot Admin 。(了解源码可+求求: 1791743380) 2. Spring Boot Admin 简介 Spring Boot Admin 是一个 Web 应用,用于管理和监视 Spring Boot 应用程序的运行状态。每个 Spring Boot 应用程序都被视为客户端并注册到管理服务器。背后的数据采集是由 Spring Boot Actuator 端点提供。前端 Spring Boot Admin UI 展示使用 VueJs 将数据展示在前端。 本文将介绍如何使用 Spring Boot Admin 对 Spring Boot 进行监控。 3. 工程实战 3.1 创建父工程 spring-boot-admin 依赖文件 pom.xml 如下: 代码清单:spring-boot-admin/pom.xml <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding