Sping Cloud的那些东西

2022-03-28  本文已影响0人  外腾湖南

1.微服务除了Spring Cloud还有哪些处理方案?

其实Spring Cloud的那些东西已已经比较过时了,虽然Spring Cloud是Cloud Native Program, 就是这东西开发出来就是适应于部署在云服务器上;

https://www.cnblogs.com/edisonchou/p/java_spring_cloud_foundation_sample_list.html

基础的云平台为微服务提供了资源能力(计算、存储和网络等),容器作为最小工作单元被Kubernetes调度和编排,Service Mesh(服务网格)管理微服务的服务通信,最后通过API Gateway向外暴露微服务的业务接口;

Istio+k8s看来是未来的发展趋势:SpringBoot就专注在编写业务逻辑上;

2.ProtoBuf是干啥的?

ProtoBuf, 协议缓冲区;Protocol Buffers (Protobuf) is a free and open-source cross-platform data format used to serialize structured data. 

3.zuul和ribbon的区别?

zuul是对外部请求方的负载均衡,而ribbon是对被调用的服务进行负载均衡;这是RestTemplate和Ribbon之间的配合;

客户端ribbon的负载均衡,解决的是服务发起方(在Eureka注册的服务)对被调用的服务的负载,比如我们查询商品服务要调用显示库存和商品明细服务,通过商品服务的接口将两个服务组合,可以减少外部应用的请求,比如手机App发起一次请求即可,可以节省网络带宽;

@Bean

```private RestTemplate restTemplate```

相较于之前常用的 httpClient,RestTemplate 是一种更优雅的调用 RESTful 服务的方式;

4.服务调用到底有哪几种方式?

参考:https://xie.infoq.cn/article/55982acf5cd799d127daefd6a

SpringBoot+SpringMVC可以处理简单的任务(HttpClient);

SpringBoot+Dubbo可以处理中等难度的微服务调用;

Spring Cloud结合zuul(Gateway异步更好)和Ribbon的服务治理;Feign或RestTemplate这种轻量级的框架进行服务调用;再+服务发现(Eureka),熔断(Hystrix);

服务既可以通过网关(Gateway)暴露给外部调用,也可以在内部借助 Feign 提供的负载均衡、重试和熔断等能力,进行服务间的优雅调用,可以说已经具备了一个“雏形”;Gateway可以实现不行再换一个实例,Gateway是Dubbo不具备的,Dubbo只有类似于Eureka的zookeepr, 然后通过Dubbo的配置实现服务的负载均衡(和Spring Cloud的服务发现与网关几乎不需要写代码,配置一下就可以跑起来是一样的)

5.OAuth2

OAuth 是“开放授权”的意思,Open Auth,用户只需要授权而不需要提供账号和密码,

Spring Cloud Security 是从 Spring Security 发展而来,Spring Cloud Security 为什么要提供 OAuth2 实现了:把微服务系统中的各个微服务都看作是独立的软件系统,借助 OAuth2 的开放授权机制,向使用者(第三方)提供受控的服务;

OAuth2 结合 JWT,在大量细粒度微服务的分布式部署环境下,比较好地进行了资源的访问控制,这个资源既包括暴露的service,也包括登录、权限控制、访问控制、用 Feign 做内部服务调用,在增加了 RequestInterceptor 带上 JWT 令牌后,也可以顺利工作;注册其实是一个单独的系统,不需要太担心,我们现在担心的是登录后的session共享;

原文链接: https://xie.infoq.cn/article/2a79743f636f58395e2d2c4a8

JWT 数据是用 Base64 编码,在网络上传输容易泄露用户信息,所以 JWT 中不要包含敏感数据,建议就用户 ID 和角色就可以了,并且启用 HTTPS 传输数据

6.关于分布式session

传统也有很多种做法,比如monolithic的session,再到Spring的session,再到利用Redis保存session, 或者通过数据库来共享session, JSON Web Token(JWT)是跟微服务比较配的一套方案,特别是既有 PC Web 端也有 App、小程序、公众号的系统。

sms_code,自定义认证,这里模拟的是短信验证码。微信、微博、支付宝等第三方登录,都可以按这个思路来实现:原文链接: https://xie.infoq.cn/article/86533fc8bd7197563e5dacd15

7.SpringCloud和Dubbo的区别

SpringCloud生态丰富,功能完善,更像是品牌机,Dubbo则相对灵活,可定制性强,更像是组装机。

而 Spring Cloud 就像品牌机,在 Spring Source 的整合下,做了大量的兼容性测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外的东西,就需要对其基础原理有足够的了解。

8.服务端负载均衡器和客户端负载均衡器的区别?

服务端负载均衡器是因为客户端没有这个能力,它有这个能力把客户端的请求进行转发;

客户端负载均衡器就是这个负载均衡器是要去调用各种微服务的;Ribbon从Eureka那里获取服务列表;

9.RestTemplate和HttpClient以及OkHttpClient的区别

RestTemplate只是起了一个template,这个template要通过OkHttpClient去调用服务;

new restTemplate(new OkHttp3ClientHttpRequestFactory());  //一旦restTemplate配置好了,就可以直接使用了;

10. Feign已经集成了Ribbon

@FeignClient这个注解就可以调用远程的service就像调用本地service一样;@FeignClient写清楚调用的Service名就可以了,而@GetMapping配置相应的接口名就可以了,就像访问本地接口一样;

而HttpClient还需要在RestTemplate里创建一个新的client去call,它与Feign的最大差别就是:@FeignClient就像本地调用,就像Dubbo, 而RestTemplate+HttpClient是发起远程调用;

不理解的敲代码都是死记硬背;

上一篇下一篇

猜你喜欢

热点阅读