最近微服务比较火,今后也将会大势所趋,今天咱们来实操一下.net core 微服务架构。
网上将微服务的很多,写得很好,我这里也不在一一总结,放一个微服务框架的博客,Net Core微服务架构
这个里面提到了微服务框架的生态及技术栈,以及简单介绍了每个技术的概念,这里面每一个技术点要都要花时间精力才能学好。
接下来咱们开始;
采用循序的方式演变的程序架构:
单一进程的单体架构 > 局域网分布式架构 > Nginx分布式集群架构+负载均衡 > Consul高可用性,高伸缩性的集群架构
demo环境:windows10 + VS 2019 + .net core 3.1
一、单一进程的单体架构
单一进程的单体架构非常的常见,就是程序所有任务都是在单一进程里面处理,咱们再部署的时候,也仅需要部署一个实例。
- 新建一个asp .net core mvc项目,取名叫MallApp
- 新加viewmodel, HomeViewModel.cs
public class HomeViewModel
{
public string Name { get; set; }
public string NowDate { get; set; }
public string IP { get; set; }
public string Info { get; set; }
}
- 修改HomeController下的Index这个action
public IActionResult Index()
{
//1. 本地调用单体架构
var re = "UserService.Get()"; // UserService看做是程序的Service层或三层架构的BLL层,从这个服务里面拿取数据
var model = new HomeViewModel()
{
Name = "MallApp",
NowDate = $"{DateTime.Now.ToLongDateString()} {DateTime.Now.ToLongTimeString()}",
IP = $"{ Request.Scheme}://{Request.Host}{Request.Path}",
Info = re
};
return View(model);
}
- 修改Index.html
@{
ViewData["Title"] = "Home Page";
}
@model HomeViewModel
<div class="text-center">
<h1 class="display-4">Welcome @Model.Name</h1>
<p>姓名:@Model.Name</p>
<p>IP:@Model.IP</p>
<p>时间:@Model.NowDate</p>
<p>信息:@Model.Info</p>
</div>
项目目录结构:
image.png
最后的显示效果
image.png
这样就是一个最简单的单体应用架构了;
单体架构的优缺点:
——优点:
1.应用开发简单
2.易于对应用程序进行大规模的更改
3.测试相对简单直观
4.部署简单明了
5.横向扩展容易
——缺点:
1.过度的复杂度
系统本身过于庞大和复杂,以至于任何一个开发者都很难以理解它的全部。
这种极度的复杂度会形成恶性循环,由于代码难以理解,因此开发人员更改更容易出错,每一次更改系统更复杂,更难懂。
2.开发速度缓慢
因为应用太大,每启动一次都需要很长的时间,因此从编辑到构建、运行再到测试这个周期花费的时间越来越长。
3.代码部署的周期很长,而且容易出问题
程序更改部署到生产环境的时间变得更长.
代码库复杂,以至于一个更改可能引起的影响是未知的。
开发团队分为多个小组,当需要发布的时候漫长的合并和测试时间非常长。
4.难以扩展
不能做到按需扩展,只能是扩展整个系统。
5.交付可靠的单体应用是一项挑战
单体程序缺乏可靠性,这个问题导致了频繁的系统故障和宕机。
应用程序缺乏故障隔离,因为所有模块都运行在同一个进程当中
6.需要长期以来某一个可能已经过时的技术栈
团队长期使用一套相同的技术,单体架构使得采用新的框架和编程语言变的及其困难。
本章结束!
网友评论