什么是微服务架构,.netCore微服务选型

什么是微服务?
单体结构:
整个系统运行在一个进程中,实际是在一个服务中处理的
在这里插入图片描述

缺点:
1)只能采用同一种技术,很难用不同的语言或者语言不同版本开发不同模块;
2)系统耦合性强,一旦其中一个模块有问题,整个系统就瘫痪了;一旦升级其中一个模块,整个系统就停机了;
3)要上线必须一起上线,互相等待,无法快速响应需求;
4)集群只能是复制整个系统,即使只是其中一个模块压力大;

微服务

在这里插入图片描述

在这里插入图片描述

不同模块放到不同的进程/服务器上,模块之间通过网络通讯进行协作。
适用于:模块比较多,访问量比较大的互联网类系统,并不是所有项目都适合微服务

优点:
1)可以用不同的语言或者语言不同版本开发不同模块;
2)系统耦合性弱,其中一个模块有问题,可以通过“降级熔断”等手段来保证系统不血崩;
3)可以独立上线,能够迅速响应需求;
4)可以对不同模块用不同的集群策略,哪里慢集群哪里。

缺点:
1)开发难度大,系统结构更复杂;
2)运行效率低;(网络通讯没有进程通讯快)

微服务架构要处理哪些问题?
服务间通讯;服务治理与服务发现;网关和安全认证;限流与容错;监视等
第一代微服务:Dubbo(Java)、Orleans(.Net)等 和语言绑定紧密;
第二代微服务:Spring Cloud等 适合混合开发
第二代微服务:Service Mesh(Service Fabric(微软内部使用的、开源的)、lstio、Conduit等)
目前:第三方微服务还在快速发展中,更新迭代比较快(还不完善)

.NetCore 微服务选型
为什么是.net Core?虽然.Net Framework也可以实现微服务,但是.Net Core是为云而生,用来实现微服务更方便,而且.Net Core可以跨平台。

第二代微服务架构:
Consul+Ocelot+.Net Core+Polly+…;
腾讯.net大队长张善友把腾讯内部的架构实战整理出一个开源项目NanoFabric(Github上可以搜到),NanoFabric不是一个独立的技术,它只是帮我们搭建好了,配置好了的一个脚手架,只是一个胶水项目,文档不全,仅供我们参考。

在SpringCloud中:EurekaServer做服务治理和服务发现、Hystrix做熔断降级、Zuul做网关;
在NanoFabric中:Consul做服务治理和服务发现、Polly做熔断降级、Ocelot做网关;

在微服务中,服务之间的通讯有俩种主要形式:
1)Restful,也就是传输Json格式数据。.net中就是对应的webapi技术 效率比较低,数据冗余,短连接
2)二进制RPC:二进制传输协议,比restful用的http通讯效率更高,但是耦合性更强。技术有Thrift、gRPC等

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
.NET Core 中,有很多种方法可以实现微服务架构,下面我为你介绍一种基于 ASP.NET Core微服务架构实现方式。 1. 创建一个 ASP.NET Core Web API 项目。 2. 在项目中添加 `Microsoft.AspNetCore.Mvc.Versioning` 和 `Swashbuckle.AspNetCore` 两个 NuGet 包,用于实现接口版本控制和 API 文档生成。 3. 在 `Startup.cs` 文件中,添加版本控制和 API 文档生成的配置。 ``` public void ConfigureServices(IServiceCollection services) { services.AddApiVersioning(options => { options.DefaultApiVersion = new ApiVersion(1, 0); options.AssumeDefaultVersionWhenUnspecified = true; options.ReportApiVersions = true; }); services.AddSwaggerGen(options => { options.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" }); }); services.AddControllers(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseSwagger(); app.UseSwaggerUI(options => { options.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1"); options.RoutePrefix = string.Empty; }); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); } ``` 4. 在项目中添加一个 `UserService` 类,用于实现用户管理的服务。 ``` public class UserService { private List<User> _users = new List<User>(); public UserService() { _users.Add(new User { Id = 1, Name = "Tom", Age = 20 }); _users.Add(new User { Id = 2, Name = "Jerry", Age = 25 }); } public List<User> GetAllUsers() { return _users; } public User GetUserById(int id) { return _users.FirstOrDefault(u => u.Id == id); } public void AddUser(User user) { _users.Add(user); } public void UpdateUser(int id, User user) { var oldUser = _users.FirstOrDefault(u => u.Id == id); if (oldUser != null) { oldUser.Name = user.Name; oldUser.Age = user.Age; } } public void DeleteUser(int id) { var user = _users.FirstOrDefault(u => u.Id == id); if (user != null) { _users.Remove(user); } } } public class User { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } ``` 5. 在项目中添加一个 `UsersController` 类,用于实现用户管理的 API 接口。 ``` [ApiController] [ApiVersion("1.0")] [Route("api/v{version:apiVersion}/users")] public class UsersController : ControllerBase { private readonly UserService _userService; public UsersController(UserService userService) { _userService = userService; } [HttpGet] public IActionResult GetAllUsers() { var users = _userService.GetAllUsers(); return Ok(users); } [HttpGet("{id}")] public IActionResult GetUserById(int id) { var user = _userService.GetUserById(id); if (user == null) { return NotFound(); } return Ok(user); } [HttpPost] public IActionResult AddUser([FromBody] User user) { _userService.AddUser(user); return Ok(); } [HttpPut("{id}")] public IActionResult UpdateUser(int id, [FromBody] User user) { _userService.UpdateUser(id, user); return Ok(); } [HttpDelete("{id}")] public IActionResult DeleteUser(int id) { _userService.DeleteUser(id); return Ok(); } } ``` 6. 运行项目,使用 Swagger UI 访问 API 文档,测试接口的调用。 这样,一个简单的微服务架构就完成了。在实际项目中,我们还可以使用服务发现、负载均衡、消息队列等技术来进一步优化微服务

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值