mono

Spring Cloud Alibaba系列(六)sentinel的实际应用

别说谁变了你拦得住时间么 提交于 2020-08-12 15:32:29
一、sentinel的持久化配置 上一章中我们通过Dashboard来为Sentinel客户端设置各种各样的规则,但是这些规则默认是存放在内存中,极不稳定,无法用于生成环境,所以需要将其持久化。 DataSource 扩展常见的实现方式有: 拉模式 :客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件,甚至是 VCS 等。这样做的方式是简单,缺点是无法及时获取变更; 推模式 :规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos 、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。 Sentinel 目前支持以下数据源扩展: Pull-based: 文件、 Consul Push-based: ZooKeeper , Redis , Nacos , Apollo , etcd 生产环境中一般常用的就是 推模式 。这里我们使用Nacos存储规则。推送模式的正确做法应该是 配置中心控制台/Sentinel 控制台 → 配置中心 → Sentinel 数据源 → Sentinel 。 1.1 sentinel同步nacos配置 增加sentinel的依赖和nacos存储扩展依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring

Spring Cloud Alibaba 整合gateway

北慕城南 提交于 2020-08-12 06:53:09
pom配置 <dependencies> <!--gateway--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!--Spring Cloud Alibaba--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency>

.NET Core 给使用.NET的公司所带来的机遇

眉间皱痕 提交于 2020-08-12 06:30:30
今晚在余晟的微信公众号看到了一篇文章《 从.NET/C#开发的“后继无人”说起: https://mp.weixin.qq.com/s/rO2d0xZ58Z2syqT7AaNT3w 》。 这篇文章以从.NET/C#开发的“后继无人” 引出了推广极客时间的课程 刘超的《趣谈Linux操作系统》,通篇看下来这明显是 刘超的《趣谈Linux操作系统》的软文。 推广无可厚非,但是这种以标题党形式贬低.NET,让几十万的.NETer 蒙羞是一种无耻的操作,何况余晟 是一位小有名气的博主,这篇文章转发在朋友圈,光是这个标题就够有杀伤力的了。这也是我看到这篇文章特别想写一篇短文来表达一下心中的999个伤害。 我也有一个公众号“dotnet跨平台”,其中的主题就是微软在2014年开始开源的.NET Core, 即将在今年发布3.0版本, .NET Core是开源跨平台的.NET ,而且他的兄弟Mono也是开源的,至今已经有17年历史,大名鼎鼎的Unity3d 就是基于Mono。.NET Core/Mono早就可以跨平台运行于Linux/Mac系统之下,而且微软把Linux 作为一等公民对待。目前我就是使用Windows 10作为开发工具,使用.NET Core开发的系统通过容器化运行于k8s 之下。微软的Visual Studio 和Visual Studio Code

学习响应式编程 Reactor (2)

瘦欲@ 提交于 2020-08-12 05:01:38
Reactor Reactor 是用于 Java 的异步非阻塞响应式编程框架,同时具备背压控制的能力。它与 Java 8 函数式 Api 直接集成,比如 分为CompletableFuture、Stream、以及 Duration 。它提供了异步 Api 响应流 Flux (用于 [0 - N] 个元素)和 Mono (用于 [0或1] 个元素),并完全遵守和实现了响应式规范。 引入 reactor reactor 自 3.0.4 版本之后,采用了 BOM (Bill Of Materials)的方式,使用 BOM 可以管理一组良好集成的 maven artifacts,而无需担心不同版本组件之间的相互依赖问题,在 maven 项目中在 dependencyManagement 中 加入 reactor 的 bom 定义即可。 <dependencyManagement> <dependencies> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-bom</artifactId> <version>Dysprosium-SR8</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> <

使用反应式关系数据库连接规范R2DBC操作MySQL数据库

有些话、适合烂在心里 提交于 2020-08-11 10:57:06
1. 简介 三月份已经介绍过 R2DBC ,它是一种异步的、非阻塞的关系式数据库连接规范。尽管一些 NoSQL 数据库供应商为其数据库提供了反应式数据库客户端,但对于大多数项目而言,迁移到 NoSQL 并不是一个理想的选择。这促使了一个通用的响应式关系数据库连接规范的诞生。 作为拥有庞大用户群的关系式数据库 MySQL 也有了反应式驱动,不过并不是官方的。但是 Spring 官方将其纳入了依赖池,说明该类库的质量并不低。所以今天就尝尝鲜,试一下使用 R2DBC 连接 MySQL 。 2. 环境依赖 基于 Spring Boot 2.3.1 和 Spring Data R2DBC ,还有反应式Web框架 Webflux ,同时也要依赖 r2dbc-mysql 库,所有的 Maven 依赖为: <!--r2dbc mysql 库--> <dependency> <groupId>dev.miku</groupId> <artifactId>r2dbc-mysql</artifactId> </dependency> <!--Spring r2dbc 抽象层--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-r2dbc</artifactId>

spring-cloud-gateway聚合swagger文档

青春壹個敷衍的年華 提交于 2020-08-11 07:04:59
需求背景 spring cloud搭建微服务系统,每个业务模块使用swagger开放文档接口查询,在业务网关模块提供swagger文档聚合查询接口,可以通过选择业务模块分类查看。 框架选型、版本及主要功能 spring boot 2.1.6.RELEASE spring cloud Greenwich.SR3 spring cloud gateway 2.1.3.RELEASE 网关组件 knife4j 2.0.1 增强swagger ui样式,网关使用其starter依赖 swagger bootstrap ui 1.9.6 增强swagger ui样式 spring4all-swagger 1.9.0.RELEASE 配置化swagger参数,免去代码开发 模块职责划分 swagger组件 开发一个项目内的swagger-spring-boot-starter,整合swagger bootstrap ui 1.9.6和spring4all-swagger 1.9.0.RELEASE,对外提供@EnableSwagger注解服务 业务模块 引用自定义的swagger-spring-boot-starter,同时在配置文件中添加本模块的swagger基础信息配置。 网关模块 引用knife4j整合swagger,并开发filter、handler

关系数据构建反应式的spring驱动程序

与世无争的帅哥 提交于 2020-08-11 04:43:22
先说说什么是响应式 响应式编程或反应式编程(英语:Reactive programming)是一种面向数据流和变化传播的编程范式,直白的说就是:将变化的值通过数据流进行传播。 反应式架构文章 WebFlux定点推送、全推送灵活websocket运用【推】 WebFlux前后端分离 -- 数据响应式展示 【推】 webflux+redis/mongodb提供响应式API【推】 WebFlux是什么呢 WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于 Reactor 中的类 Flux。Spring webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好。 spring-webflux 模块。该模块包含对响应式 HTTP 和 WebSocket 客户端的支持,以及对 REST,HTML 和 WebSocket 交互等程序的支持。一般来说,Spring MVC 用于同步处理,Spring Webflux 用于异步处理。 Spring Boot Webflux 有两种编程模型实现,一种类似 Spring MVC 注解方式,另一种是基于 Reactor 的响应式方式。 R2DBC是什么? 响应式关系数据库连接的支持 主题 之前我有对非关系性数据库的响应式api实现(

关于Texture2D Crunched压缩格式

和自甴很熟 提交于 2020-08-09 19:49:59
1)关于Texture2D Crunched压缩格式 ​2)Unity自身GC和.NET的GC如何协调工作 3)关于环境光照球面坐标映射2D贴图UV的某算法的疑问 4)iOS审核dlopen、dlsym风险 5)Unity 2018.4在iOS上压缩贴图用的是哪个可执行文件 这是第208篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。 UWA 问答社区: answer.uwa4d.com UWA QQ群2:793972859(原群已满员) Texture Q1:关于Texture2D的压缩格式设置上,想问一下大家有没有Crunch ETC2 压缩格式的上线经验。效果如何? A1:当时是使用的Unity 4.7,后来翻了5.6的源码移植。2017的算法有了更多的优化。为了解决包体大小的问题,曾经在某上线项目中,将Crunched ETC2功能移植到了Unity早期的版本中。 使用Crunched ETC2压缩后会降低包体的大小,但同时会增加运行时解压缩的时间消耗,总体来说效率影响是比较可控的。不同的贴图使用Crunched ETC2会有不同的压缩比,于是对于一类贴图批量控制贴图格式将达到更好的压缩性价比。 当时我们针对部分类型的帖图进行了Crunched ETC2的压缩,测试下来的效果是默认开启Crunched

关于dotnet跨平台 和 移动开发&人工智能 微信公众号

会有一股神秘感。 提交于 2020-08-09 18:56:40
dotNET跨平台 《dotNET跨平台》是国内首个以.NET程序员、技术文化、新闻为主题的公众号,拥有超过6万读者。在这里你可以谈微软.NET,Mono的跨平台开发技术,也可以谈谈其他的跨平台技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux主流平台。 移动开发和人工智能 专注于微软.NET技术的机器学习和移动开发资讯,致力于AI技术民主化,平民化。 来源: oschina 链接: https://my.oschina.net/u/4306295/blog/4326124

学习响应式编程 Reactor (3)

亡梦爱人 提交于 2020-08-09 12:49:16
Reactor Reactor 项目的主要 artifact 是 reactor-core,这是一个基于 Java 8 的实现了响应式流规范的响应式库。 Reactor 提供了实现 Publisher 的响应式类 Flux 和 Mono,以及丰富的操作符。一个 Flux 代表 0...N 个元素的响应式流;一个 Mono 代表 0|1 个元素的响应式流。 Flux 和 Mono 之间可以转换,比如 Flux 的 count 操作(计算流中元素个数)返回 Mono,Mono 的 concatWith 操作(连接另一个响应式流)返回 Flux。 Flux Flux<T> 是一个能够发出 0 到 N 个元素的标准 Publisher<T>,它会被一个完成(completion)或错误(error)信号终止。因此,一个 Flux 的可能结果是 value、completion 或 value,这三个分别会传递给订阅者中的 onNext、onComplete、onError 方法。 注意:所有的信号事件,包括代表终止的信号事件都是可选的。如果没有 onNext 事件,但是有 onComplete 事件,那么发出的就是空的有限流;如果去掉 onComplete 就得到一个 无限的空数据流。无限的数据流可以不是空的,比如 Flux.interval(Duration) 生成的是一个 Flux