微服务

  单体架构

 单体架构的优点:

  1、易于开发

  2、易于部署

  3、易于拓展

单体架构的缺点:

  1、巨大的代码、代码质量下滑。两者恶性循环。

  2、IDE过载。

  3、Web容器启动效率。

  4、持续部署带来挑战。

  5、应用不易拓展。

  6、规模化开发。

  7、一套技术栈,撸到低。

在单体架构中,为了负载均衡,需要将1套代码部署在多台web服务器上。但是 如果在“用户系统”中用到了“项目系统”(就是部署在3台服务器上的系统)中db内的一些数据,那么该怎么去做?直接使用 link server去访问那个DB?

答:

1、聚合服务(聚合数据库:再创建一个数据库,将 这两块用到的表都放到一个DB当中,通过对聚合数据库进行查询)。

2、冗余(将用户数据冗余到项目系统中去,直接在项目系统的DB内查询出)。

对单体架构进行横向拓展。

 将原本的单体架构拆分成多个服务部署在多个服务器上。

1、通过调用service,读写数据。

2、读写分离。(当第1条无法解决问题,就使用第2条)

3、分库。(当第2条无法解决问题,就使用第3条)

  

微服务

一组小的服务

独立的进程

轻量级通信

基于业务的能力

独立部署

无集中式的管理

 

微服务所带来的问题(挑战):

1、分布式所带来的问题追踪、测试、部署、监控。

2、开发难度加大(聚合查询、分布式事务)。

var userService=new UserService();

var user=userService.GetUser(10010);

在单体架构中,如果上面的代码发生异常,我们能够很块的定位到错位原因,但是在微服务架构中,由于是通过调用服务(服务器与另一台服务器通信)来获取数据,如果出现了错误,那么无法能够迅速的定位到错误问题。(可能是代码bug,可能是网络问题……)

面向微服务架构的单体架构。

 在微服务架构下,聚合服务是使用 UserAPI和ContactAPI 来读写数据的。而在这里,作者是创建了AggregateController,并在该controller中引用了两个service来达到目的(引用DLL的方式)。

原文地址:https://www.cnblogs.com/vichin/p/15255457.html