正向代理和反向代理

运维公会:正向代理和反向代理

1、正向代理

正向代理和反向代理_第1张图片

(1)服务对象不同

正向代理服务器的服务对象是客户端,可以将客户端和代理服务器看作一个整体。

(2)配置方法不同

需要在客户端配置代理服务器的地址

(3)作用

当客户端没有办法和服务器直接进行通信的时候,这个时候使用代理服务器是让客户端和服务端通信的好方法。客户端指定请求给代理服务器,代理服务器将请求发送给服务端,将服务端的内容取来,返给客户端。这样完成客户端和服务端的访问。

 

 

 

2、反向代理

正向代理和反向代理_第2张图片

(1)服务对象

反向代理服务器的服务对象是服务端,可以将服务端和代理服务器看作一个整体。

(2)配置方法

代理服务器上要配置上服务端的地址。

(3)作用

可以保证内网的安全,客户端没有办法直接和服务端进行通信,当客户端的请求直接发送给代理服务器,代理服务器去取过服务端的内容,返回给客户端。还有就是做负载均衡,这个是用的最多的,可以保证网站的高并发,高可用性。

假设我们要拆分出来一个微服务叫“client-service”,它需要访问“core client”表。第一步,我们先把程序从原来的代码里拆分出来,变成一个服务. 数据库不动,这个服务仍然指向原来的数据库。其他程序不再直接访问这个服务管理的表,而是通过服务调用或另建共享表来获取数据。

正向代理和反向代理_第3张图片

图片来源

第二步,再把服务的数据库表拆分出来,这时微服务就拥有它自己的数据库了,而不再需要原来的共享数据库了。这时就成了一个真正意义上的的微服务。

上面只讲了拆分一个微服务,如果有多个需要拆分,则需一个一个按照上面讲的方法依次进行。

另外,Martin Fowler在他的文章"Break Monolith into Microservices"里有一个很好的建议。那就是,当你把服务从单体程序里拆分时,不要只想着把代码拆分出来。因为现在的需求可能已经跟原来有所不同,原先的设计可能也不太适用了。而且,技术也已更新,代码也要作相应的改造。更好的办法是重写原来的功能(而不是重写原来的代码),把重点放在拆分业务功能上,而不是拆分代码上,用新的设计和技术来实现这个业务功能。

结论:

数据库设计是微服务设计的一个关键点,基本原则是每个微服务都有自己单独的数据库,而且只有微服务本身可以访问这个数据库。微服务之间的数据共享可以通过服务调用,或者主、从表的方式实现。在共享数据时,要找到合适的同步方式。在微服务架构中,数据库的修改影响广泛,需要保证这种修改是向后兼容的。实现跨服务事物的标准方法是Saga。当把单体程序拆分成微服务时,可以分步进行,以减少对现有程序的影响。

索引:

  1. 微服务之间调用的最佳设计
  2. ApplicationDatabase
  3. Update your www.yinchengyule.cn Database Schema www.haojuanht.com Without Downtime
  4. Evolutionary www.chuanchenpt.cn Database Design
  5. Fault-Tolerance and Data Consistency Using Distributed Sagas
  6. Distributed Sagas: A Protocol for www.yingchenyl.com Coordinating Microservices www.haoranjupt.com- Caitie McCaffrey www.haoranpkk.cn JOTB17
  7. Managing Data in Microservices
  8. How to break a Monolith into Microservices

你可能感兴趣的:(正向代理和反向代理)