欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

初识spring-cloud-square

  • 2021年4月13日,spring在官方博客上宣布,一个名为Spring Cloud Square的项目正式发布首个公开可用的里程碑版本:

  • 热门视频网站于2021年7月7日发布一段介绍Spring Cloud Square的视频,如下图,大佬Josh Long给我们演示了如何用Spring Cloud Square将SpringBoot应用的HTTP客户端做得更智能,B站搜索spring-cloud-square即可

  • 在介绍spring-cloud-square之前,咱们先去了解一下square,会对咱们后面的理解有很大帮助,网站是:https://square.github.io,如下图,这是个开源网站,向社区贡献了很多库,到底有哪些库呢?点击下图红框中的Java试试:

  • 如下图,Java库还真不少呢,红框中的两位:okhttp和retrofit,都是大名鼎鼎:

  • 至此,聪明的您应该猜到了:spring-cloud-square和上面提到的square有关,具体的说应该是和square的java库有关,例如将okhttp和retrofit与SpringBoot的自动装配结合,玩出点花样来

  • 另外关键字还有spring-cloud,再加上okhttp和retrofit都和网络访问有关,spring-cloud-square的身份就更具体了:借助square的库,方便Spring Cloud环境中的服务调用!

提前小结

  • 为避免因废话太多而被聪明的您抛弃,现在就小结什么是spring-cloud-square:
  1. spring-cloud-square的重点是集成
  2. Spring Cloud LoadBalance提供了根据服务名获取对应IP和端口的能力
  3. OkHttpClient和Retrofit是远程访问的框架
  4. Spring Cloud LoadBalance和OkHttpClient组合的话,在用OkHttpClient远程访问的时候可以用服务名做地址了,具体的IP和端口由Spring Cloud LoadBalance负责获取
  5. Spring Cloud LoadBalance和Retrofit组合,也是同样的道理
  6. 于是,Spring官方就推出了上述组合,用AutoConfig再加少量代码(例如OkHttpClient添加Interceptor,功能是将服务名替换成IP和端口),将上述关键技术做组合,再包装成jar,例如spring-cloud-square-okhttp.jar就是 Spring Cloud LoadBalancer与OkHttpClient的组合
  7. 咱们开发SpringBoot应用时,直接依赖spring-cloud-square-okhttp.jar,再添加少量代码(如Builder实例化),就能方便的远程调用了;
  8. 这种组合型jar包,Spring一口气做了三个,然后起个名字叫做spring-cloud-square,然后,您爱用哪个就用哪个
  9. 咱们开发SpringBoot应用时,直接依赖spring-cloud-square-okhttp.jar,再添加少量代码(如Builder实例化),就能方便的远程调用了;
  • 看到这里,聪明的您应该明白了,spring-cloud-square原来这么简单,只是将注册中心和和网络工具集成,为应用开发提供了一些辅助而已,实际上看过spring-cloud-square源码之后也确实如此,不过spring-cloud-square目前还只是孵化项目,由于Spring技术栈在不断演进,相信它会越来越符合官方的描述:Smart,做更智能的HTTP客户端

  • 接下来再看看spring-cloud-square提供的具体的能力有哪些

spring-cloud-square的具体能力

  • 如下图所示,spring-cloud-square一共有三种能力,下图每一个红色背景的节点代表一种具体的能力,稍后会详细说明:

  • okhttp类型容易理解,只有一个jar文件:spring-cloud-square-retrofit.jar,用在最简单的请求响应场景

  • retrofit的好处很多(简洁易用,解耦,扩展性强,可搭配多种Json解析框架(例如Gson),支持RxJava),就不在本文展开了,博览群书的您应该记得,retrofit无法独立完成网络操作,其底层还要依赖更加基础的库,这个特点在spring-cloud-square中也体现出来了:和okhttp搭配是常见的经典组合(安卓开发的同学一定很熟悉),或者和webflux搭配,用在响应式异步非阻塞场景;

  • 看到这里,聪明的您应该得出一个结论:欣宸废话太多...

  • 您说的没错,下一篇咱们进入实战环节,写代码体验spring-cloud-square,欣宸原创,必不会辜负您的期待

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...

https://github.com/zq2599/blog_demos

五分钟搞懂spring-cloud-square的更多相关文章

  1. 五分钟搞懂POM设计模式

    转载请注明出处️ 作者:IT小学生蔡坨坨 原文链接:五分钟搞懂POM设计模式 大家好,我是IT小学生蔡坨坨. 今天,我们来聊聊Web UI自动化测试中的POM设计模式. 为什么要用POM设计模式 前期 ...

  2. 五分钟搞懂Vuex

    这段时间一直在用vue写项目,vuex在项目中也会依葫芦画瓢使用,但是总有一种朦朦胧胧的感觉.于是决定彻底搞懂它. 看了一下午的官方文档,以及资料,才发现vuex so easy! 作为一个圈子中的人 ...

  3. 五分钟搞懂 Linux 重点知识,傻瓜都能学会!

    来源:无痴迷,不成功 www.cnblogs.com/justmine/p/9053419.html 写在前面 我们都知道Linux是一个支持多用户.多任务的系统,这也是它最优秀的特性,即可能同时有很 ...

  4. 五分钟搞懂什么是B-树(全程图解)【转】

    前戏 我们大家都知道动态查找树能够提高查找效率,比如:二叉查找树,平衡二叉查找树,红黑树.他们查找效率的时间复杂度O(log2n),跟树的深度有关系,那么怎么样才能提高效率呢?当然最快捷的方式就是减少 ...

  5. 五分钟搞懂MySQL索引下推

    大家好,我是老三,今天分享一个小知识点--索引下推. 如果你在面试中,听到MySQL5.6"."索引优化" 之类的词语,你就要立马get到,这个问的是"索引下推 ...

  6. 不用找了,300 分钟帮你搞定 Spring Cloud!

    最近几年,微服务架构一跃成为 IT 领域炙手可热的话题,大量一线互联网公司因为庞大的业务体量和业务需求,纷纷投入了微服务架构的建设中,像阿里巴巴.百度.美团等大厂,很早就已经开始了微服务的实践和应用. ...

  7. 五分钟搞定Go.js

    五分钟搞定Go.js  1.基于html5~因为Go.js是一个依赖于HTML5特性的JavaScript库,所以需要确保您的页面声明它是一个HTML5文档,当然需要加载库 <!DOCTYPE ...

  8. zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》

    本篇文章阅读时间5分钟左右 点击看<每日五分钟搞定大数据>完整思维导图   zookeeper作为一个分布式协调系统,很多组件都会依赖它,那么此时它的可用性就非常重要了,那么保证可用性的同 ...

  9. zookeeper核心-zab协议-《每日五分钟搞定大数据》

    上篇文章<paxos与一致性>说到zab是在paxos的基础上做了重要的改造,解决了一系列的问题,这一篇我们就来说下这个zab. zab协议的全称是ZooKeeper Atomic Bro ...

随机推荐

  1. mysql多次连接后会产生最大失败值

    解决办法 可以更改max_connection_errors的值,即提高允许的max_connection_errors的数量 1.进入mysql 1)首先查看该属性设置为多大:命令:show glo ...

  2. 分布式必备理论基础:CAP和BASE

    大家好,我是老三,今天是没有刷题的一天,心情愉悦,给大家分享两个简单的知识点:分布式理论中的CAP和BASE. CAP理论 什么是CAP CAP原则又称CAP定理,指的是在一个分布式系统中,Consi ...

  3. JAVA语言程序设计课程评价

    紧张的又短暂的一个学期结束了,这个学期也许将成为我人生中一个重要的转折点,作为一名半路出家的选手,在初次了解Java语言时我感到非常的迷茫与不知所措.因为之前很多同学都是通过假期时间在家自学,刚转入新 ...

  4. 小程序跳转H5及其他页面

    一.小程序和公众号 答案是:可以相互关联. 在微信公众号里可以添加小程序. 图片有点小,我把文字打出来吧: 可关联已有的小程序或快速创建小程序.已关联的小程序可被使用在自定义菜单和模版消息等场景中. ...

  5. Shell系列(24)- 条件判断之文件类型

    按照文件类型进行判断 标红,记住:其他了解即可 测试选项 作用 -b 文件 判断该文件是否存在,并且是否为块设备文件(是块设备文件为真) -c 文件 判断该文件是否存在,并且是否为字符设备文件(是字符 ...

  6. 一文让你彻底理解having和where的区别

    having子句与where都是设定条件筛选的语句,有相似之处也有区别. having与where的区别: having是在分组后对数据进行过滤 where是在分组前对数据进行过滤 having后面可 ...

  7. python 正则表达式findall

    re.findall("匹配规则", "要匹配的字符串") 以列表形式返回匹配到的字符串 https://www.cnblogs.com/gufengchen/ ...

  8. Hbuilder 生成移动App资源升级包

    建立文件夹www,将需要更新的文件放置在里面. 将manifest.json文件中version字段的版本修改为新编号. 在文件夹www外建立文件update.xml,内容如下: <?xml v ...

  9. EXP-00091 正在导出有问题的统计信息-处理方法

    打开oracle的SQL Puls中的命令如下: 1.conn /as sysdba   登陆 2.shutdown immediate;    关闭数据库 3.startup mount 4. AL ...

  10. Liunx下Mysql,MongoDB性能优化的配置

    场景 这几天在赶十一上线的项目,但是突然发现接口性能不好,高并发支持不住.又不想改代码,就在数据库层面进行优化. Mysql 分区:项目中有对40万条的数据进行时间查询的要求,就算对DateTime建 ...