微服务系列实践 .NET CORE
从事这个行业转眼已经6年了,从当初刚毕业的在北京朝八晚十,从二环到五环,仍每天精力充沛的小愤青;再到深圳一点一滴的辛勤在软件行业的耕种,从当初单体应用架构到现在微服务架构的经历,回想起来自己的收获倒是不少。人生也许算是比较平淡,运气到也还算不错,做过的项目刚好让我在这些方面能有不错的认知和自我学习的空间。
本来这个系列能带来的更早,奈何去年打王者荒废了太多的时间(有点收获的可能就是连续三赛季王者了),好在自己还算醒悟及时,最近看到微服务的所使用的框架或者工具倒也是非常多,但大多都需要自己研究的内容太多,而且由于少有的docker化,很难再实际生产环境灵活的应用,这次带来全docker化的实战体验。

实践部署架构图
实践源码:https://github.com/zengqinglei/microservice-deploy
为了更加接近生产环境的部署方式,我们使用vmware创建如下几台主机:
- centos-02:192.168.0.102 应用集群节点-2
- centos-03:192.168.0.103 应用集群节点-3
- ubuntu-04:192.168.0.104 应用集群节点-4
- ubuntu-05:192.168.0.105 数据库节点-5
虚拟IP:192.168.0.110


系列导航目录
由于文章中涉及内容较多,所以其中如设计docker构建、配置等复杂教程都会引导大家去github查看详情,大家注意一下引导链接地址,文章中尽可能通过简要的原理及对于微服务架构的作用配合图讲解,让文章更加通俗易懂。
1. 微服务系列介绍
2. 搭建服务器(cenos + ubuntu)环境
3. 搭建docker,docker-compose环境
4. 负载集群及高可用(keepalived + nginx)
5. 搭建consul集群服务发现、注册、健康检查环境
6. 搭建mysql,sqlserver数据库环境
7. 搭建携程Apollo集群统一配置中心
8. 基于Skywalking的服务跟踪及性能监控
9. 搭建统一服务日志中心
10. .NET CORE 微服务示例
11. 集群完整版
推荐一下我的 Asp.Net Core 框架
名称:Creekdream.AspNetCore
开源地址:http://github.com/zengqinglei/Creekdream.AspNetCore
简单介绍
我自己的框架参考了一些Abp框架,根据近一两年针对微服务开发设计,总结开发出来的。
首先,说明一下Abp框架确实很优秀,但随着微服务的发展,框架整体相对较为臃肿,模块化设计不够彻底,核心类库都依赖了各种接口的实现,我们团队在使用的过程中可能由于不熟悉会导致一些莫名的问题,再加上微服务盛行,使得更多的模块变得没有必要。
微软的 .NET CORE 已经做到很优秀,提供Service注入统一入口,中间件、日志、依赖注入的加入等,使得模块化以及开发模式的规约都使得开发变得更加规范可控,框架的设计原则尽可能遵从 .NET CORE 的设计理念。
简要特点
- 分离模块化,独立模块都有自己的核心库
- 依赖注入,抽象使其能替换依赖注入框架
- DDD领域分层
- 提供快捷生成项目模板
- 提供EntityframeworkCore以及Dapper两种ORM
- 工作单元支持
- 核心模块仅依赖必要的接口
框架架构图

总结
本次微服务系列从基本概念到一步步的基础设施的搭建最后晚上的一套服务架构体系,用完全docker化的方式给大家呈现,方便根据实际的生产或者测试环境进行调整。
微服务之路是漫长的,我们仍还需要很多工作要做,在工作中,根据业务需求划分边界,微服务API的定义,服务内部的模块划分都需要我们花更多的时间去推敲。
最后呢,这两年 .NET 在国内实在有些低迷,从接触 .NET CORE 到现在真心感觉到它的优秀,也希望我们能共同在 .NET 方面能贡献出更多的力量,能帮助它发展的越来越好!
微服务系列实践 .NET CORE的更多相关文章
- .NET Core微服务系列基础文章索引(目录导航Final版)
一.为啥要总结和收集这个系列? 今年从原来的Team里面被抽出来加入了新的Team,开始做Java微服务的开发工作,接触了Spring Boot, Spring Cloud等技术栈,对微服务这种架构有 ...
- .NET Core微服务系列基础文章
今年从原来的Team里面被抽出来加入了新的Team,开始做Java微服务的开发工作,接触了Spring Boot, Spring Cloud等技术栈,对微服务这种架构有了一个感性的认识.虽然只做了两个 ...
- NET Core 2.0 微服务跨平台实践
NET Core 2.0 微服务跨平台实践 相关博文: Ubuntu 简单安装 Docker Mac OS.Ubuntu 安装及使用 Consul Consul 服务注册与服务发现 Fabio 安装和 ...
- 【微服务目录】.NET Core 微服务介绍
介绍: 写这篇文章有多方面的原因,第一当然是为了以后自己可以随时翻阅,第二也算是一种积累吧.因为有些东西你弄个之后,过了很长时间不用,可能会有些忘却,但是你因为以前弄个吧,有不是那种小白,需要去找示例 ...
- 【转】「Chris Richardson 微服务系列」微服务架构的优势与不足
Posted on 2016年5月4日 编者的话|本文来自 Nginx 官方博客,是微服务系列文章的第一篇,主要探讨了传统的单体式应用的不足,以及微服务架构的优势与挑战. 作者介绍:Chris Ric ...
- 微服务系列(二):使用 API 网关构建微服务
编者的话|本文来自 Nginx 官方博客,是微服务系列文章的第二篇,本文将探讨:微服务架构是如何影响客户端到服务端的通信,并提出一种使用 API 网关的方法. 作者介绍:Chris Richardso ...
- 【CHRIS RICHARDSON 微服务系列】微服务架构中的进程间通信-3
编者的话 |本文来自 Nginx 官方博客,是微服务系列文章的第三篇,在第一篇文章中介绍了微服务架构模式,与单体模式进行了比较,并且讨论了使用微服务架构的优缺点.第二篇描述了采用微服务架构的应用客户端 ...
- 【CHRIS RICHARDSON 微服务系列】事件驱动的数据管理-5
编者的话 |本文来自 Nginx 官方博客,是「Chris Richardson 微服务」系列的第五篇文章.第一篇文章介绍了微服务架构模式,并且讨论了使用微服务的优缺点:第二和第三篇描述了微服务架构模 ...
- 【微服务】之二:从零开始,轻松搞定SpringCloud微服务系列--注册中心(一)
微服务体系,有效解决项目庞大.互相依赖的问题.目前SpringCloud体系有强大的一整套针对微服务的解决方案.本文中,重点对微服务体系中的服务发现注册中心进行详细说明.本篇中的注册中心,采用Netf ...
随机推荐
- dev gridview指定单元格cell获取坐标
DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo Info2 = gvQueryResult.GetViewInfo() as DevExpre ...
- HttpSession implements session
体验 使用HttpSession进行会话管理,完全可以忽略HTTP无状态的事实. HttpSession会话管理原理 使用HttpSession进行会话管理十分方便,让Web应用程序看似可以“记得”浏 ...
- 3The superclass “javax.servlet.http.HttpServlet" was not found on the Java Build Path 之一
另外一篇短文里还有第三种解决方案,查看请点击这里 1.异常信息 创建maven web项目时,出现 The superclass “javax.servlet.http.HttpServlet&quo ...
- redis介绍(7)高级用法
redis的过期策略以及内存淘汰机制 分析:这个问题其实相当重要,到底redis有没用到家,这个问题就可以看出来.比如你redis只能存5G数据,可是你写了10G,那会删5G的数据.怎么删的,这个问题 ...
- python读取shp
sf = shapefile.Reader("res2_4m.shp") records = sf.records() print sf.fields for record in ...
- 9.Java注解(Annotation)
一.系统内置标准注解 1.@Override 是一个标记注解类型,它被用作标注方法. 它说明了被标注的方法重载了父类的方法,起到了断言的作用.如果我们使用了这种Annotation在一个没有覆盖父类方 ...
- 不同服务器数据库之间的数据定时同步到sql server (支持mysql,oracle数据库同步到sql server)
1,在目标数据库新增服务器对象->连接到服务器->新建服务器连接 2,编写数据同步业务PROC ALTER PROC TestProc AS BEGIN --打开完全事物回滚 SET XA ...
- C# 运行 C#代码脚本文件
https://files.cnblogs.com/files/LittleJin/CSScriptRun.zip
- 使用GTID给Galera集群做数据库异步复制
一.为什么要做Galera集群异步复制 Galera集群解决了数据库高可用的问题,但是存在局限性,例如耗时的事务处理可能会导致集群性能急剧下降,甚至出现阻塞现象.而不幸的是,类似报表等业务需求就需要做 ...
- [翻译] RAReorderableLayout
RAReorderableLayout A UICollectionView layout which you can move items with drag and drop. 一种UIColle ...