学习内容安排如下: 当然系统架构肯定不是微服务说我一篇文章就能学好的,只能说我作为一名初学者,目前是火热如何去理解这些概念的。 至于想要真正地去弄懂这些,统架需要自己长期性地不断学习,微服务非一朝一夕就能学完的目前。 技术更新是统架非常快的,从单一应用到垂直细分,微服务到分布式,目前到SOA,火热以及微服务架构。 还有在Google带领下的Service Mesh,只有不断地学习才能在IT行业前行下去。 1集中式架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。网站模板 但是流量一旦增加就会出现各种的问题: 当然为了解决这些问题,后续也做了优化,根据业务功能对系统进行拆分。 虽然解决了代码耦合问题,但是系统间相互独立,会有很多重复开发工作,影响开发效率。 举一个例子来理解,比如说一个电商项目,根据业务功能拆分成两套系统: 那么现在问题来了: 根据id去数据库查询商品,Service层和Dao层的代码要写两遍,造成了代码的极度冗余。 2分布式服务 为了解决代码冗余问题,可以将核心业务作为独立的服务抽取出来,形成服务中心。 多个子系统只需要访问服务中心就好了。 优点:将基础服务进行了抽取,高防服务器系统间相互调用,提高了代码复用和开发效率。 缺点:一旦服务变多,调用关系错综复杂,开发者自己都搞不清楚谁调用谁,难以维护。 3流动计算架构SOA 它将普通的分布式系统集中管理起来了,更便于维护,同时也提高资源利用率。 其典型的架构就是阿里巴巴的Dubbo,这个架构图就比较复杂了,我就不自己画了。 不要看好像挺复杂的,本质上都是为了管理服务,我以打车的例子大致说明下: 对于服务也是一样的源码下载,以前有什么问题? 为了解决上述问题,服务治理做了哪些? 对于我个人来说,我就会用滴滴和司机之间的关系作为对比,来理解服务管理和服务之间的关系,不然专业术语太多了,也很难理解。 4微服务 微服务和SOA比较像,但也有一些差别。 ①微:微服务的核心 也就是小的意思,服务拆分粒度很小。例如一个用户管理就可以作为一个服务。 ②面向服务 每个服务都要对外暴露Rest风格服务接口API,并不关心服务的技术实现。 你是用Java实现的也好,还是用Python实现的也罢,都可以,只要提供Rest的接口即可。 ③单一职责 微服务中每一个服务都对应唯一的业务能力,做到单一职责。 ④独立 我们以前写的代码本质上都是在一个服务中,属于服务内部:类与类之间的调用。 那如何实现服务之间的调用呢?有两种方式:RPC调用和Http调用。 1RPC调用 基于原生TCP通信,速度快,效率高,现在热门的dubbo,都是RPC的典型代表。 2Http调用 这个就太常见了,我们以前一直在用的Ajax请求,就属于http调用。 它的特点在于灵活,实现了不同编程语言之间的调用,Ajax就是在使用js调用Java。 现在使用Java代码调用Java,做个演示: 我在电脑上创建了两个不同的工程,工程①也就是我们这几天用SpringBoot搭建的项目。 在工程①中实现了通过id去数据库查询用户数据的功能,也可以通过浏览器访问。 那在工程②中调用工程①中的业务,也就是服务之间的调用。 注意:这和以前已经有本质上的区别了,以前都是内部的调用,现在不一样了。 当然因为我这边只有一台电脑,所以我不太确定能否实现跨电脑的调用。 那它具体是如何实现的呢? 3RestTemplate 它是Spring提供的一个模板工具类,也是上述我使用到的工具: ①SpringBoot测试 在SpringBoot中测试和在Spring中测试有些许不同之处需要注意。 是使用注解@SpringBootTest说明,参数为启动类的字节码。 ②restTemplate 这也就是spring提供的模板工具类,使用spring注入后,即可以直接使用 ③getForObject() 这是发送一次get请求,postForObject对应着post请求,发送到哪儿呢? 学习完了Http客户端工具,就可以正式学习微服务了,明天开始学SpringCloud。 谢谢你的观看。一、火热系统架构概述
二、服务调用方式
最后