摘要:一. 业务背景 计划: 先把单体架构优化到极致,然后向微服务架构转变,并分析当中遇到的各种问题。 用到的技术栈和工具 服务器:centos8 数据库:MySQL 5.7 集群 基础框架:Asp.Net Core +EF Core + Dapper 日志框架:待定 缓存框架:redis 5.0 集群 阅读全文
posted @ 2020-09-29 15:14 Yaopengfei 阅读(121) 评论(0) 推荐(0) 编辑
摘要:一. Linux简介 1. 什么是linux 世界上不仅只有一个 Windows 操作系统,还有 Linux、mac、Unix 等操作系统。桌面操作系统下 Windows 是霸主,而 Linux 的桌面操作系统用的人很少,因为 Windows 有的很多软件在 Linux 下没有或者很弱;服务器操作系 阅读全文
posted @ 2020-09-01 07:35 Yaopengfei 阅读(136) 评论(1) 推荐(1) 编辑
摘要:一. 架构演变历史 1. 集中式开发 最初的大型计算机使用打孔卡,并且大多数计算都在批处理过程中进行。 2. CS架构 客户端/服务器体系结构将大多数逻辑放在服务器端,并将某些处理放在客户端上。 3. BS三层架构 Web浏览器成为客户端软件,而Web和应用程序服务器托管所有处理和逻辑。 4. 面向 阅读全文
posted @ 2020-05-13 22:05 Yaopengfei 阅读(553) 评论(9) 推荐(6) 编辑
摘要:一. 简介 1. 数据库基本概念 (1). 数据库(DataBase:DB):数据库是是按照数据结构来组织、存储和管理数据的仓库。 >存储和管理数据的仓库. (2). 数据库管理系统(Database Management System:DBMS):是专门用于管理数据库的计算机系统软件。数据库管理系 阅读全文
posted @ 2020-03-30 10:06 Yaopengfei 阅读(333) 评论(1) 推荐(0) 编辑
摘要:一. 什么是数据结构 1. 简介 数据结构,简单的来说,就是研究数据的存储方式。我们必须要知道,数据在计算机上存储空间的存放,绝对不是胡乱放的,是为了方便后期对数据的再运用,这就要求我们选择一种好的方式来存储数据,这就是数据结构的核心内容。 比如:我们可以用数组来存放{1,2,3,4,5,6},为了 阅读全文
posted @ 2020-03-23 14:32 Yaopengfei 阅读(204) 评论(1) 推荐(0) 编辑
摘要:一. 简介 1. 说明 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用 阅读全文
posted @ 2020-02-25 14:35 Yaopengfei 阅读(212) 评论(2) 推荐(0) 编辑
摘要:一. 简介 1. 什么是Redis? 全称“Remote Dictionary Server”,基于内存管理数据,它有多种数据结构(常用的5种),分别应对不同场景;它是单线程模型的,所以不会存在并发问题,数据不会出现中间状态;对外提供:增删改查、固化、集群等功能,包含0-15个数据存储库。 PS:R 阅读全文
posted @ 2019-11-19 15:15 Yaopengfei 阅读(531) 评论(1) 推荐(1) 编辑
摘要:一. 目录暂时不更新,马上要出 .net 5了,届时会把下面的组件全部更新一遍,改为最新写法。 二. 三. 系列章节 第一节:EF Core简介和CodeFirst和DBFirst两种映射模式(以SQLite和SQLServer为例) 第二节:EF Core的常规“增删改”及状态的变化 第三节:EF 阅读全文
posted @ 2019-04-07 17:19 Yaopengfei 阅读(787) 评论(3) 推荐(1) 编辑
摘要:一. 目录暂时不更新,马上要出 .net 5了,届时会把下面的组件全部更新一遍,改为最新写法。 二. 三. 系列章节 第一节:.Net Core环境的安装和常用指令 第二节:SSL证书的申请、配置(IIS通用)及跳转Https请求的两种方式 第三节:Windows平台部署Asp.Net Core应用 阅读全文
posted @ 2019-03-13 08:11 Yaopengfei 阅读(775) 评论(2) 推荐(0) 编辑
摘要:一. 简介 1. 什么是WebApi? WebApi是一个很广泛的概念,在这里我们特指.Net平台下的Asp.Net WebApi框架,它是针对各种客户端(浏览器、APP等)来构建Http服务的一个框架,它是一种RestFul风格的开发接口的技术,它比WebService更省流量,比WCF更简单。下 阅读全文
posted @ 2018-12-24 15:35 Yaopengfei 阅读(2146) 评论(2) 推荐(1) 编辑
摘要:一. 简单说几句 最早使用SignalR的时候大约是两年前了,记得当时是一个OA中消息的实时提醒,轮询的方式有点耗资源,WebSocket写起来又比较麻烦,最终选择了SignalR,当时是什么版本已经记不清了,反正现在最新的是2.3.0(这里指 .Net FrameWork下,而非Core下),这期 阅读全文
posted @ 2018-07-22 20:08 Yaopengfei 阅读(2441) 评论(1) 推荐(1) 编辑
摘要:一. 背景 我们在日常开发中,可能你会遇到这样的需求:"每个月的3号给用户发信息,提醒用户XXX "、"每天的0点需要统计前一天的考勤记录"、"每个月的1号计算上个月的库存情况"、"定时初始化数据供其它业务使用"、"每隔2分钟轮询查数据库看某业务是否被审核通过,并提示用户" 等等。 以上需求在开发中 阅读全文
posted @ 2018-06-23 07:46 Yaopengfei 阅读(6142) 评论(26) 推荐(32) 编辑
摘要:一. 背景 在刚接触开发的头几年里,说实话,根本不考虑多线程的这个问题,貌似那时候脑子里也有没有多线程的这个概念,所有的业务都是一个线程来处理,不考虑性能问题,当然也没有考虑多线程操作一条记录存在的并发问题,后面随着处理的系统业务越来越复杂,多线程再也回避不了了,也就借此机会深入研究了一下.Net中 阅读全文
posted @ 2018-06-21 07:35 Yaopengfei 阅读(4901) 评论(24) 推荐(26) 编辑
摘要:一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模式,ViewState功不可没,通过的控件的拖拽和绑定,很快就可以搭建出来一个Web项目,其开发速度远胜Java、PHP,当年Web项目并不很重视体验, 阅读全文
posted @ 2018-06-20 07:38 Yaopengfei 阅读(7053) 评论(11) 推荐(25) 编辑
摘要:一. 谈情怀 从第一次接触开发到现在(2018年),大约有六年时间了,最初阶段连接数据库,使用的是【SQL语句+ADO.NET】,那时候,什么存储过程、什么事务 统统不理解,生硬的将SQL语句传入SQLHelper类中,后来知道还要注意SQL注入,引入参数化的方式,现在回想一下,那个阶段简直Low到 阅读全文
posted @ 2018-06-19 07:56 Yaopengfei 阅读(6792) 评论(16) 推荐(20) 编辑
摘要:一. 回顾历史 回顾个人发展历程,自2012年初次接触开发至今(2018年)已经有六个年头,这期间陆陆续续学习并掌握了不少技术,C#语言、ORM框架、多线程技术、设计模式、前端技术、MVC、MVVM框架思想等等,每种技术随着多次使用,随着不断的反思,逐渐经历 “了解→理解→掌握→精通 ”这么一个过程 阅读全文
posted @ 2018-06-15 11:41 Yaopengfei 阅读(5734) 评论(25) 推荐(32) 编辑
摘要:一. 什么是设计模式 纠结了好久,今天终于下定决心开始写设计模式系列,因为这个系列章节确实不好写,在这之前,也看了好多关于设计模式的博客、视频、书籍等,最后结合自己的理解,亲自动手实操代码,完成该章节。 我也和我同行的朋友交流了一下关于设计模式,对设计模式的理解,可以分为这么几个层次: ①:根本不知 阅读全文
posted @ 2018-04-03 16:10 Yaopengfei 阅读(613) 评论(6) 推荐(0) 编辑
摘要:一. 背景 二. 技术选型与比较 三. 由浅入深系列章节 第一节:框架前期准备篇之Log4net详解 第二节:框架前期准备篇之AutoFac常用用法总结 第三节:框架前期准备篇之利用Newtonsoft.Json改造MVC默认的JsonRestult 第四节:框架前期准备篇之进程外Session的两 阅读全文
posted @ 2018-02-01 13:43 Yaopengfei 阅读(616) 评论(3) 推荐(1) 编辑
摘要:。。。。 阅读全文
posted @ 2020-10-22 09:44 Yaopengfei 阅读(6) 评论(0) 推荐(0) 编辑
摘要:一. Nginx限流和负载均衡 1. 限流 可以ip限流或者限制总请求数。防止大量恶意请求,通过nginx的ip限制处理 1秒1个ip只能请求一次,但也有弊端,比如多个人在同一个ip下,容易误杀,所以看怎么取舍了. 参考代码: #user nobody; worker_processes 1; #e 阅读全文
posted @ 2020-10-21 13:43 Yaopengfei 阅读(13) 评论(0) 推荐(0) 编辑
摘要:一. 事件总线机制 1. 业务改造 引入时间总线的概念,采用CAP框架进行业务处理,同时利用RabbitMQ代替Redis队列,采用SQLServer进行本地消息表的存储, 采用 推模式 发送消息,我们习惯称之为 发布-订阅 模式。 关于基于CAP框架实现事件总线,详见: https://www.c 阅读全文
posted @ 2020-10-18 20:17 Yaopengfei 阅读(19) 评论(1) 推荐(0) 编辑
摘要:一. 前言 1.背景 最初版本的消费者一条一条获取,然后创建订单扣减库存,非常慢,我们希望在保证消费顺序的情况下提升消费速度。 2.设计思路 A.我们设置两个维度:数量 和 时间,比如当从队列中获取的数量达到200条的时候提交 或者 2s提交一次(但必须有数据) B.EFCore默认提交大数据量可能 阅读全文
posted @ 2020-10-18 20:12 Yaopengfei 阅读(11) 评论(1) 推荐(0) 编辑
摘要:一. Lua简介 1. 介绍 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。 该章节主要是Redis调用Lua脚本。 2. 好处 (1). 减少网络开销:本来多次网络请求的操作,可以用一个请求完成,原先 阅读全文
posted @ 2020-10-16 14:55 Yaopengfei 阅读(12) 评论(1) 推荐(0) 编辑
摘要:一. 单品限流 1. 含义 某件商品n秒内只接受m个请求, 比如:限制商品A在2s内只接受500个下单请求。 2.设计思路 利用Redis自增的Api,该商品的第一个请求进来的时候设置缓存过期时间,限制内正常走业务,限制外返回限流提示;时间到了,原缓存内容消失,下一次第一个请求进来重新设置过期时间 阅读全文
posted @ 2020-10-14 20:51 Yaopengfei 阅读(20) 评论(1) 推荐(0) 编辑
摘要:一. 小白写法 1.设计思路 纯DB操作 DB查库存→判断库存→(DB扣减库存+DB创建订单) 2.分析 A.响应非常慢,导致大量请求拿不到结果而报错 B.存在超卖现象 C.扣减库存错误 3.压测结果 前提:原库存为10000,这里统计2s内可处理的并发数,以90%百分位为例,要求错误率为0。 代码 阅读全文
posted @ 2020-10-14 13:33 Yaopengfei 阅读(36) 评论(1) 推荐(0) 编辑
摘要:一. 修改密码指令 1. 说明 这里是以MySQL5.7为例,修改密码,这里指的是能用root连接上MySQL,修改自身密码或者其它账号密码 。(与下面的忘记密码不同哦) 2. 修改方法 首先要链接上mysql,进入mysql命令行界面,链接指令:【mysql -uroot -p123456】。 - 阅读全文
posted @ 2020-10-11 19:15 Yaopengfei 阅读(12) 评论(2) 推荐(0) 编辑
摘要:一. 基本概念 1.QPS(Queries Per Second) A. 指每秒查询率,是一台服务器每秒能够响应的查询次数(数据库中的每秒执行查询sql的次数)。 B. 是数据库中的概念,每秒执行条数(查询),被引申到压测中来了,但是不包括插入、更新、删除操作,所以不建议用qps来描述系统整体的性能 阅读全文
posted @ 2020-10-10 10:18 Yaopengfei 阅读(25) 评论(2) 推荐(0) 编辑
摘要:一. CAP框架异常处理 1. RabbitMQ宕机 (1).模拟场景 直接把RabbitMq服务关闭,然后发送5次请求,会发现Published表中多了5条数据!!!!Received表中没有数据;然后打开RabbitMq服务,观察现象,仔细观察Published表,有3条记录已经重试了3次,是F 阅读全文
posted @ 2020-10-07 09:27 Yaopengfei 阅读(48) 评论(2) 推荐(0) 编辑