Spring Cloud

Dubbo-go 发布 1.5 版,朝云原生迈出关键一步

断了今生、忘了曾经 提交于 2020-08-04 11:36:01
作者 | 于雨、何鑫铭 等 引语 计算机技术浪潮每 10 年都有一次技术颠覆,相关知识体系最迟每 5 年都会革新一次,大概每两年贬值一半,在应用服务通信框架领域亦然。凡是有长期生命的通信框架,大概有 5 年的成长期和 5 年的稳定成熟期。每个时代都有其匹配的应用通信框架,在 20 年前的 2G 时代,强跨语言跨平台而弱性能的 gRPC 是不会被采用的。 每个通信框架,不同的人从不同角度看出不同的结论:初学者看重易用易学,性能测评者注重性能,应用架构师考虑其维护成本,老板则考虑则综合成本。一个应用通信框架的性能固然重要,其稳定性和进化能力更重要,得到有效维护的框架可在长时间单位内降低其综合成本:学习成本、维护成本、升级成本和更换成本。 **什么是 Dubbo-go?**第一,它是 Dubbo 的 Go 语言版本,全面兼容 Dubbo 是其第一要义;第二,它是一个 Go 语言应用通信框架,会充分利用作为云原生时代第一语言---Go 语言的优势,扩展 dubbo 的能力。 2008 年诞生的 Dubbo 已有十多年历史,依靠阿里和其社区,历久弥新。2016 年发布的 Dubbo-go 也已进入第五个年头,如今全面兼容 Dubbo v2.7.x 的 Dubbo-go v1.5 终于发布了。 回首过往,Dubbo-go 已经具备如下能力: 互联互通:打通了 gRPC 和 Spring

Spring cloud、seata分布式事务解决方案实践——AT模式

北城以北 提交于 2020-08-04 11:19:16
概述 本示例模拟服务器设备运维授权功能,使用 seata 来实现分布式事务一致性。 Seata官方文档地址: http://seata.io/zh-cn/docs/overview/what-is-seata.html Spring cloud参考文档: https://spring.io/projects/spring-cloud#learn 本示例源码仓库地址: https://github.com/bugbycode/spring_cloud_dev.git 工作准备 开发工具: Eclipse/Myeclipse/ IntelliJ IDEA 任选其一 · 运行环境: jdk1.8 及以上版本 · 数据库: MySQL 5.7 · 示例采用 框架: Spring boot 2.2.4 、 Spring cloud Hoxton.SR5 、 Spring security oauth2 、 Mybatis 、 Element ui 、 Seata 1.3.0 Seata服务部署 1 、下载最 1.3.0版本的Seata 服务, Seata 服务下载地址如下: https://github.com/seata/seata/releases 2 、解压后分别修改 seata 服务配置文件 registry.conf 和 file.conf ,修改后内容分别如下所示:

“微服务”都要把我坑惨了!

假如想象 提交于 2020-08-04 11:08:54
都 2020 年了 还没用过 微服务 吗? 面试的时候高并发回答的总是不能让面试官满意? 一个互联网项目究竟有多少细节? 网上搜了一堆秒杀系统方案,究竟真实的线上电商该怎么做? 那么你缺乏这两个字 实 战 消除痛点、解决面试、积累实战经验 欢迎你参加马士兵教育 微服务与高并发 训练营 本号粉丝: 免 费 两天你将学到 快速 · 上手微服务,了解各个组件的作用 极简 · 从点到面,内容绝不拖泥带水 实战 · 构建微服务项目 架构 · 高并发系统中组件解析与选型 健壮 · 互联网项目常用中间件服务 做到 · 从传统项目转向微服务互联网系统架构 吊打 · 面试官,独家解析淘宝网秒杀系统需求 马士兵是谁? 马士兵 马士兵老师,清华大学, 推动Java生根中国 , 推动大数据生根中国 , 推动AI生根中国 ,视频课程下载次数累计数 27000万次 。 训练营时间: 7月29日-7月30日,20:00 开营前:发放预习的基础资料 长按扫码,领预习资料,入群学习 遇到扫码频繁,请再次识别 福利较大,限前200人 第一天:快速上手SpringCloud微服务系统架构+常用中间件服务 SOA、Webservice、Dubbo、SpringCloud究竟什么是微服务? 单体应用向微服务异构平台架构演变 SpringCloud微服务组件生态体系 从零开始构建微服务项目各组件应用场景及代码实现

ASP.NET Core中Ocelot的使用:基于Spring Cloud Netflix Eureka的动态路由

China☆狼群 提交于 2020-07-29 09:19:41
在《 ASP.NET Core中Ocelot的使用:API网关的应用 》一文中,我介绍了如何在ASP.NET Core中使用Ocelot实现API网关。在介绍的过程中,引出了一个问题,就是服务之间相互调用的代码能不能别写死(hard code)在代码里,至少也得通过配置文件来指定吧?说的没错,很好的建议,只不过我也提到过,写在配置文件中也不是一个很好的实践。设想一下,假如我们有几十个微服务,各个微服务之间都有可能会有相互调用的情况,那么我们就需要维护大量的与微服务的地址、端口相关的配置信息,这样非常容易出错,如果是通过微服务的环境变量进行设置,那就更糟糕了,一大堆的环境变量设置,会使得应用程序的部署变得非常麻烦而且容易出错。另一个原因是,在云端部署的微服务,本身就具有伸缩的能力,服务的地址和端口很有可能是不固定的,所以,将这些信息保存在配置文件或者环境变量中是不合理的。因此,本文会介绍Spring Cloud Netflix Eureka服务的使用,通过服务注册与发现(Register and Discovery)机制,配合Ocelot的动态路由来解决这个问题。 这是一件有趣的事情:我们打算实现微服务,于是,将我们的业务拆分成两个微服务,然后发现微服务之间有相互调用的关系,客户端也需要同时使用多个微服务来展示处理结果,因此

SpringCloud 应用在 Kubernetes 上的最佳实践 —— 开发篇

喜你入骨 提交于 2020-07-29 08:47:27
作者 | 孤弋 阿里云高级技术专家,负责 EDAS 的开发和用户体验优化工作。 前言 近年来,云原生、Kubernetes、微服务、SpringCloud 这些名词在技术圈内不绝于耳,数据显示,使用 SpringCloud 作为微服务的框架,同时选择 Kubernetes 作为应用与基础设施运维底座的团队越来越多,这二者的搭档基本上成为了业界的主流配搭。 为了顺应这一趋势,EDAS 也紧紧围绕这一典型场景,对它的开发、测试、部署、联调、线上运维等诸多环节中的开发者体验进行深度打磨,发布了全新的 3.0 版本。同时,针对如何在采用了 SpringCloud + Kubernetes 架构的应用上使用 EDAS,我们团队提供各个环节的最佳实践,供开发者参考。 本篇进入我们的第一章节:开发。 初始化项目 阿里巴巴从 2018 年开始开源了以原阿里集团中间件为主要能力、全方位对标 SpringCloud Netflix 的全家桶服务,也就是目前的 Spring Cloud Alibaba 项目( https://github.com/alibaba/spring-cloud-alibaba ),经过两年多的发展,这个项目受到了越来越多开发者的喜爱,目前的 star 数也达到了 14K。 不过对于开发者而言,选择变多的同时,往往也会伴随一些烦恼,比如:我们到底需要使用什么版本

使用Ocelot、IdentityServer4、Spring Cloud Eureka搭建微服务网关:Step by Step(二)

空扰寡人 提交于 2020-07-29 07:18:29
本文继续介绍使用Ocelot、IdentityServer4以及Spring Cloud Eureka搭建微服务网关的步骤。相关文章: 《 使用Ocelot、IdentityServer4、Spring Cloud Eureka搭建微服务网关:Step by Step(一) 》 Step 4:引入Ocelot API网关 新建一个ASP.NET Core API项目,添加对以下NuGet包的引用: Ocelot IdentityServer4 IdentityServer4.AccessTokenValidation Serilog(我使用了Serilog来输出格式化的日志,如果不使用Serilog,则不需要引用) 首先,修改Startup.cs文件,用来启用Ocelot,并指定身份认证机构为之前我们建好的IdentityServer服务: public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2); services.AddAuthentication() .AddIdentityServerAuthentication("AuthProviderKey",

Gartner 发布容器公有云竞争格局报告 | 纳比云原生资讯月报 Vol.11

匆匆过客 提交于 2020-07-29 05:26:19
一分钟速览新闻点 ☁ 云计算报告 ① Gartner 容器报告:阿里云与AWS并列第一 <推荐> ☁ 业界新闻 ② Istio将被捐赠给开源基金会 <推荐> ③ Kotlin gRPC 宣布开源 ④ CloudNativeSummit 召开 ⑤ KubeCon 2020 Shanghai 或开展线上活动 ⑥ CNCF 新增 81 位成员 ☁ 程序员专区 ⑦ Spring Cloud 2020.0.0-M1发布 <推荐> 云计算报告 01 Gartner 容器报告:阿里云与AWS并列第一 4月2日消息,国际知名调研机构Gartner发布2020年公有云容器报告,阿里云连续两年成为唯一入选的中国企业。Gartner 报告显示,阿里云容器服务在中国市场表现强劲,产品形态丰富,与 AWS 并列第一。 业界新闻 02 Istio将被捐赠给开源基金会 Istio 项目找到了理想的发展方向: Google Cloud CEO 表示将把 Istio 项目捐赠给基金会。 阅读更多 03 Kotlin gRPC 宣布开源 Kotlin 现在是第二流行的基于 JVM 的编程语言,Kotlin gRPC 的开源能够让 gPRC 的服务服务于 Kotlin 平台。 04 CloudNativeSummit 召开 4月7日,CloudNative 峰会在youtube上通过直播形式召开

Spring Cloud Alibaba系列(三)使用feign进行服务调用

女生的网名这么多〃 提交于 2020-07-29 04:07:16
什么是Feign Feign是spring cloud提供的一个声明式的伪http客户端,它使得调用远程服务就像调用本地服务一样简单,只需要创建一个接口并添加一天注解即可。 Nacos很好的兼容了Feign,Feign默认默认继承了Ribbon,所以在nacos下使用Feign默认就实现了负载均衡的效果。 Ribbon支持的负载均衡策略 负载均衡就是将请求分摊给多个实例进行进行处理。 根据负载均衡发生位置的不同,一般分为服务端负载均衡和客户端负载均衡。 服务端负载均衡指的是发生在服务提供者一方,比如常见的nginx负载均衡。 客户端负载均衡指的是发生在服务请求的一方,也就是在服务请求之前已经选好了由哪个实例进行处理。 我们在微服务中一般会选择客户端负载均衡,Ribbon就是在客户端进行了负载。 Ribbon内置了多种负载均衡策略,内部负载均衡的顶级接口为:com.netflix.loadbalancer.IRule,具体的负载策略如下图所示: 策略类 命名 描述 RandomRule 随机策略 随机选择server RoundRobinRule 轮询策略 按照顺序选择server(ribbon默认策略) RetryRule 重试策略 在一个配置时间段内,当选择server不成功,则一直尝试选择一个可用的server BestAvailableRule 最低并发策略

掌门教育微服务体系 Solar | 阿里巴巴 Nacos 企业级落地上篇

自作多情 提交于 2020-07-29 04:03:56
联席作者:吴毅挺 任浩军 张彬彬 廖梦鸽 张金星 胡振建 郑重鸣谢:Nacos - 彦林,Spring Cloud Alibab - 小马哥、落夜,Nacos 社区 - 张龙(pader)、春少(chuntaojun) 前言 在高速发展的时候,公司规模越来越大,老师人数越来越多,这时候公司不能铺太多人去做运营与服务,必须提高每个人效,这就需要技术驱动。因此掌门教育转变成一家技术驱动型的公司,如果被迫成为一家靠资金驱动的公司就活不下去了。 -- 张翼(掌门教育创始人兼 CEO) 掌门教育自 2014 年正式转型在线教育以来,秉承“让教育共享智能,让学习高效快乐”的宗旨和愿景,经历云计算、大数据、人工智能、 AR / VR / MR 以及现今最火的 5G ,一直坚持用科技赋能教育。掌门教育的业务近几年得到了快速发展,特别是今年的疫情,使在线教育成为了新的风口,也给掌门教育新的机遇。 随着业务规模进一步扩大,流量进一步暴增,微服务数目进一步增长,使老的微服务体系所采用的注册中心 Eureka 不堪重负,同时 Spring Cloud 体系已经演进到第二代,第一代的 Eureka 注册中心已经不大适合现在的业务逻辑和规模,同时它目前被 Spring Cloud 官方置于维护模式,将不再向前发展。如何选择一个更为优秀和适用的注册中心,这个课题就摆在了掌门人的面前。经过对 Alibaba

写代码注意了,打死都不要用 User 这个单词

♀尐吖头ヾ 提交于 2020-07-29 01:59:22
当你意识到你在项目开始时做的轻量、简单的设想竟然完全错了时,你已经用了六个月的时间投入到这个项目上。 现在你需要解决这些问题,才能让这个系统继续运行下去,你发现你用在这个项目上的精力远远超出了你的预期,如果一开始就用正确的方式来做,就不会发生这样的事。 今天,我要告诉你的是一个经常犯的错误,一个会给你带来无穷无尽的问题的单词,那就是“users”。 这个单词有两个最基本的错误: 1、对你的需求来说 “User” 几乎从来都不是一个好的描述。 2、“User” 会导致一个基本的设计安全缺陷。 “user” 的概念是模糊不清的,使用更精准的术语几乎总是能起到更好的效果。 你没有使用者 最开始,没有任何一个软件系统真的有使用者存在。乍一看“user”是一个好的描述,但是你稍微一想就会意识到你的业务逻辑实际上比这要复杂的多。 我会使用三个例子,从一个极端的情况出发。 机票预订系统没有“users” 我曾经给机票预订系统写过访问控制逻辑,下面只是一小部分需求: 旅客可以使用预定记录码通过网站查看预定信息。 购买者可以通过信用卡号后四位数在网站上修改预订信息。 旅行社可以查看和修改他们的预订。 航空公司的值机人员可以根据角色和航空公司来查看和修改预订信息,这需要旅客提供身份信息。 不再一一列举。一些与人类相关的基本概念是“旅客”,“代理”(网站也可是看作代理)和“购买者”。 “user