Today is 乐优商城的第二天,学习了系统架构的发展,微服务和springcloud的Eureka,每天学新东西都是多的,但是一想到我们的项目不是淘淘商城了,是一个全新的项目,就充满希望,想把这个全新的项目学好。
一.系统架构的演进
1.集中式架构,所有的模块都耦合在一起
2.垂直拆分,分家,各模块相对独立,但是每一个模块都直接和数据库打交道,产生了很多重复的工作
3.分布式服务,将系统的基础服务进行抽取,各个业务都可以调用这些服务,提高了代码服用和开发效率。但是缺乏统一管理,相当于每一个模块都是直接和那些基础服务打交道的。导致关系错综复杂。
4.SOA面向服务,有一个统一的注册中心来管理服务。
5.微服务,服务拆分的更小。
二.服务调用的方式
既然发展到微服务,那么服务之间是怎么通信的?
两种方式:1.RPC和Http
RPC远程服务调用,将请求序列化,通过网络传输,在接收端进行反序列化解析,拿到参数,执行方法,再将结果序列化返回
Http则通过http协议进行通信,信息封装在请求行,请求头,请求体中。
从三个方向比较
1.速度 RPC速度更快
2.难度 RPC更难实现,http简单
3.灵活度 http通过rest风格的链接相互调用,RPC需要更服务之间用相同的语言,因为传入的参数,方法可以接手。并且约定好序列化和反序列化的方式
我们追求自由,不喜欢收到多的限制,所以我们选择基于Http的Rest风格的服务。
三.JAVA代码如何处理HTTP请求?(Http客户端工具)
主流有三种:
OKHttp
URLConnection
客服端发送请求http请求,并接受响应。这里以HttpClient为例,看java代码中如何使用HttpClient发送http请求的
在使用HttpClient之前,需要先创建对象
CloseableHttpClient httpClient; @Before public void init() { httpClient = HttpClients.createDefault(); }
如果是get请求,发送请求request得到响应response
HttpGet request = new HttpGet("http://localhost:8081/list"); String response =