微服务现在已经是各种互联网应用首选的云架构组件,无论是 BAT 还是 滴滴、美团 ,微服务都是重要的一环。

相对于微服务,传统应用架构有以下缺点:

1. 业务代码混杂,团队成员职责边界不清,团队协作体验不佳,开发效率低下。

传统应用架构中,各个业务模块代码都存在于同一个应用当中,各个业务模块之间交互逻辑复杂,代码统统混在一起,难免出现要去别人代码里改代码的情况

2. 代码耦合度高,日趋臃肿,难以重构,维护成本越来越高。

感受过被F12支配的恐惧吗?

3. 容错能力弱,单点故障引发全局崩溃。

4.无法针对热点业务增加资源,造成浪费。

典型的微服务架构概览

微服务架构按照功能和业务将应用程序分离成若干个部分,使各个部分之间松绑。一个典型的简单微服务架构至少有以下几个部分:

1. UI 层:即前端视觉层,包括 web 端网页、手机APP以及PC客户端。

2. 网关层:网关层类似我们家里用的路由器,可以将入站请求重定向到目标为服务,并将站内的微服务进行整合打包输出到站外。UI层一般会通过 HTTP/HTTPS 协议访问网关向公网暴露的接口。此外,网关还应该具有鉴权的功能。

3. 反向代理:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。通过在网络各处放置反向代理节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。

4. 微服务集群:根据需求不同,微服务集群中会包含至少1个微服务实例,通过负载平衡将请求分配到每个实例上。如果使用Docker容器服务,则微服务集群中至少包含一个Docker实例,配合负载平衡,我们可以动态的决定要启用多少个Docker实例,并在不需要的时候销毁冗余的实例,提供完全自动化的弹性计算能力。

5. 互操作性:微服务之间一般选用 HTTP/HTTPS 或者 RPC 作为互操作协议,使用JSON或者ProtoBuf序列化对象。由于微服务都部署在同一个内网之中,性能损耗几乎可以忽略不计,如果选用RPC + ProtoBuf 的交互方案,延迟会更低。

微服务架构还有一些不足:

1. 微服务首先强调的是服务规模小,便于服务的伸缩和扩展,但是这也会导致服务碎片化,对人员管理提出了挑战。

2. 微服务是一个分布式的系统,每一个微服务都有自己的数据库,虽然在一定程度上增加了应用程序的整体可靠性,但是也不可避免的带来大量冗余数据。

3. 随着服务规模增长,微服务的实例数量将会飞速增长,比如美国著名的在线电视网站 NetFlix(网飞)有大约600个微服务实例,而且这个数量还在不断地增长。微服务的运维程序将不断攀升。

4. 对于一些业务逻辑十分复杂的业务,可能一次调用便与十几甚至数十个接口相关,为了满足性能需求,我们不得不引入通知系统来异步处理一些内容。异步处理紧接着就带来了数据一致性问题。

以上便是本章内容,如有稍可愚目者,还请不吝赐教。

下一章我将会通过一个例子分析同步执行和异步执行的优劣。

转载自:https://www.cnblogs.com/TO-WW/p/7309346.html

.NET Core 实践一:微服务架构的优点(转)的更多相关文章

  1. .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡

    1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...

  2. .net core 微服务架构-docker的部署-包括网关服务(Ocelot)+认证服务(IdentityServer4)+应用服务(asp.net core web api)

    本文主要介绍通过Docker来部署通过.Net Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(asp.net c ...

  3. .NET Core 微服务架构-Docker部署

    本文主要介绍通过Docker来部署通过.NET Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(ASP.NET C ...

  4. 从 Spring Cloud 开始,聊聊微服务架构实践之路

    [编者的话]随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. ...

  5. CI Weekly #5 | 微服务架构下的持续部署与交付

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

  6. SpringCloud(一):微服务架构概述

    1-1.  系统进化理论概述 在系统架构与设计的实践中,经历了两个阶段,一个阶段是早些年常见的集中式系统,一个阶段是近年来流行的分布式系统: 集中式系统: 集中式系统也叫单体应用,就是把所有的程序.功 ...

  7. 《Spring Cloud与Docker微服务架构实战》配套代码

    不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...

  8. Spring Cloud与Docker微服务架构实战 PDF

    电子版百度云下载 链接: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ 提取码: 关注公众号[GitHubCN]回复2019获取 本书的代码 共计70 ...

  9. Spring Cloud 微服务架构解决方案

    1 理解微服务 1.1 软件架构演进 软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程. 1.1.1 单体架构 特点: 1.所有的功能集成在一个项目工程中. 2.所有的功能打一个 ...

随机推荐

  1. C++的IO处理中的头文件以及类理解(2)<sstream>头文件

    C++的IO处理中的头文件以及类理解(2)<sstream>头文件 头文件<sstream>中定义的类型都继承iostream头文件中定义的类型.除了继承得来的操作,sstre ...

  2. dell T130服务器加内存

    需求:客户一台dell T130塔式服务器,由于本机只有一条8G内存,系统运行比较慢,需要再增加一条8G内存. 增加过程:第一次增加时由于没有注意机器上内存频率是2133的,所以新增加的一条2400频 ...

  3. DateFormat and SimpleDateFormat

    import java.text.DateFormat; import java.text.SimpleDateFormat; ------------------------------------ ...

  4. Java中最常用的集合类框架之 HashMap

    一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构.      HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...

  5. 第48节:Java当中的集合框架

    Java当中的集合框架 01 在我们班里有50位同学,就有50位对象. // 简书作者:达叔小生 Student[] stus = new Student[20]; 结果来了一位插班生,该同学因为觉得 ...

  6. 站点的rel="alternate"属性

    概述 今天看决战平安京官网源码,突然看到了rel的alternate属性,百度了一下,记录下来,供以后开发时参考,相信对其他人也有用. PC端rel 在pc版网页上,添加指向对应移动版网址的特殊链接r ...

  7. SpringBoot开源项目(企业信息化基础平台)

    JEEPlatform 一款企业信息化开发基础平台,可以用于快速构建企业后台管理系统,集成了OA(办公自动化).SCM(供应链系统).ERP(企业资源管理系统).CMS(内容管理系统).CRM(客户关 ...

  8. 产品经理聊产品--mac book pro 2018 初体验

    工作前几年,使用电脑,基本上都是微软的操作系统,自从从大厂出来之后,才逐渐熟悉使用linux,到现在基本上都是基本上一个月windows平台基本不需要开机就可以,可以说基本上被ubuntu的简洁和实用 ...

  9. [原创]K8 DB_Owner权限GetShell工具

    2011-04-23 02:19:56|  分类: 原创工具 DB_Owner权限拿Shell工具[K.8]Author: QQ吻Team:Crack8_TeamBlog:http://qqhack8 ...

  10. 利用max-height适应多尺寸屏幕的下拉动画

    移动设备的特点之一便是屏幕尺寸多种多样,所以我们在制作针对移动设备的动画时必须不同尺寸屏幕的兼容性.比如我们要制作以下动画:红框2为详细内容,默认收起:红框1处为事件响应热区,点击后展开或收起红框2的 ...