.NET Core 实践一:微服务架构的优点(转)
微服务现在已经是各种互联网应用首选的云架构组件,无论是 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 实践一:微服务架构的优点(转)的更多相关文章
- .net core 跨平台开发 微服务架构 基于Nginx反向代理 服务集群负载均衡
1.概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客 ...
- .net core 微服务架构-docker的部署-包括网关服务(Ocelot)+认证服务(IdentityServer4)+应用服务(asp.net core web api)
本文主要介绍通过Docker来部署通过.Net Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(asp.net c ...
- .NET Core 微服务架构-Docker部署
本文主要介绍通过Docker来部署通过.NET Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(ASP.NET C ...
- 从 Spring Cloud 开始,聊聊微服务架构实践之路
[编者的话]随着公司业务量的飞速发展,平台面临的挑战已经远远大于业务,需求量不断增加,技术人员数量增加,面临的复杂度也大大增加.在这个背景下,平台的技术架构也完成了从传统的单体应用到微服务化的演进. ...
- CI Weekly #5 | 微服务架构下的持续部署与交付
CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...
- SpringCloud(一):微服务架构概述
1-1. 系统进化理论概述 在系统架构与设计的实践中,经历了两个阶段,一个阶段是早些年常见的集中式系统,一个阶段是近年来流行的分布式系统: 集中式系统: 集中式系统也叫单体应用,就是把所有的程序.功 ...
- 《Spring Cloud与Docker微服务架构实战》配套代码
不才写了本使用Spring Cloud玩转微服务架构的书,书名是<Spring Cloud与Docker微服务架构实战> - 周立,已于2017-01-12交稿.不少朋友想先看看源码,现将 ...
- Spring Cloud与Docker微服务架构实战 PDF
电子版百度云下载 链接: https://pan.baidu.com/s/115u011CJ8MZzJx_NqutyTQ 提取码: 关注公众号[GitHubCN]回复2019获取 本书的代码 共计70 ...
- Spring Cloud 微服务架构解决方案
1 理解微服务 1.1 软件架构演进 软件架构的发展经历了从单体结构.垂直架构.SOA架构到微服务架构的过程. 1.1.1 单体架构 特点: 1.所有的功能集成在一个项目工程中. 2.所有的功能打一个 ...
随机推荐
- maven 项目快速下载jar方式
maven仓库默认在国外,使用难免很慢,尤其是下载依赖的时候,换为国内镜像,让你感受飞一般的感觉.国内支持maven镜像的有阿里云,开源中国等,这里换为阿里云的. 修改maven配置文件setting ...
- ETC(电子不停车收费系统)的发展演变
ETC引进中国是在上世纪的90年代中期,当时中国部分经济发达地区的高速公路车流量激增,从而导致了收费口的交通堵塞.高速公路堵车现象时有发生,拥堵严重的路段可能会天天堵,有时候一堵好几天.高速公路管理手 ...
- 修复运行 tasklist 命令时提示 ERROR: Not found
最近碰到了一个脚本运行 tasklist 总是提示 ERROR: Not found,在这里找到了修复的方法 https://superuser.com/questions/1282867/windo ...
- 在linux环境下用中文查询数据库
1.用SQL在linux环境下,查询语句的中文条件,查不到结果. mysql -h ***.***.***.*** -P 3303 -uroot -p*********** -D boztax -e ...
- Ettercap 实施中间人攻击
中间人攻击(MITM)该攻击很早就成为了黑客常用的一种古老的攻击手段,并且一直到如今还具有极大的扩展空间,MITM攻击的使用是很广泛的,曾经猖獗一时的SMB会话劫持.DNS欺骗等技术都是典型的MITM ...
- cookie和session的个人理解
这是我学习后的个人理解 欢迎提点 如果说的不是很正确请纠正 COOKIE: 1.服务端给浏览器客户端返回一个编号(COOKIE值) 2.这个值存在浏览器中,接下来浏览器再次访问我的时候,会把这个值带 ...
- audacity 做音频分析之--初相识
软件介绍: Audacity是一个跨平台的声音编辑软件,用于录音和编辑音频,是自由.开放源代码的软件.可在Mac OS X.Microsoft Windows.GNU/Linux和其它操作系统上运作. ...
- Scala - 快速学习07 - 模式匹配
Scala中的模式匹配的功能可以应用到switch语句.类型检查.“解构”等多种场合. 简单匹配 Scala的模式匹配最常用于match语句中.Scala的match语句类似Java里的switch. ...
- Java 中的 String 真的是不可变吗?
我们都知道 Java 中的 String 类的设计是不可变的,来看下 String 类的源码. public final class String implements java.io.Seriali ...
- ionic2 基于ngx-translate实现多语言切换,翻译
介绍 ngx-translate 是Angular 2+的国际化(i18n)库,在github的地址是箭头 https://github.com/ngx-translate/core 将ngx-tra ...