摘要:
前言 使用第三方镜像肯定不是学习Docker的最终目的,最想要的还是自己构建镜像;将自己的程序、文件、环境等构建成自己想要的应用镜像,方便后续部署、启动和维护;而Dockerfile就是专门做这个事的,通过类似简单编码的形式,最终就可以构建出属于自己的镜像,所以必须学起来。 正文 1. Docker 阅读全文
摘要:
前言 上一篇把常用命令演示了一遍,其中也提到容器的隔离性,默认情况下,容器内应用产生的数据都是由容器本身独有,如果容器被删除,对应的数据文件就会跟着消失。从隔离性的角度来看,数据就应该和容器共存亡;但在实际用场景中,更多需要将数据持久化,即容器被删除,数据也应该正常存在;另外也有很多场景需要容器之间 阅读全文
摘要:
前言 上一篇大概认识了Docker,主要是从概念、架构、优点及流程方面进行阐述,并进行安装和体验; 接下来就开始进行实操学习,在演示过程中会针对关键的知识点进行归纳和总结,这里先从常用命令说起,来吧,小伙伴们。 正文 1. 预览 Docker和我们熟悉的Git很类似,都是通过命令执行相关操作,当然也 阅读全文
摘要:
前言 对于分布式事务,常用的解决方案根据一致性的程度可以进行如下划分: 强一致性(2PC、3PC):数据库层面的实现,通过锁定资源,牺牲可用性,保证数据的强一致性,效率相对比较低。 弱一致性(TCC):业务层面的实现,通过预留或锁定部分资源,最后通过确认或取消操作完成事务的处理。比如A向B转款500 阅读全文
摘要:
前言 上一篇对gRPC进行简单介绍,并通过示例体验了一下开发过程。接下来说说实际开发常用功能,如:gRPC的四种模式、gRPC集成JWT做认证和授权等。 正文 1. gRPC四种模式服务 以下案例演示,服务端用微软提供的模板创建,客户端使用Winform程序演示,基于.NetCore3.1版本。具体 阅读全文
摘要:
前言 系统分布式已经成为程序员的家常,将大型单体划分为相对简单的小模块,分散系统能力,提升系统扩展性、功能模块复用性等;各功能模块之间肯定会有很多数据共享和交互的应用场景,那就避免不了各模块之间的通信;目前用的比较多的方式是HTTP(Restful API)接口、消息队列等,而HTTP(Restfu 阅读全文
摘要:
前言 关于HttpClient的使用,个人在很多场景都派上用场了,比如在Winform或后台服务中用其调用接口获取和上传数据、微服务中用其进行各服务之间的数据共享等,到目前来看,似乎还没有出现过什么问题,但当我看到官方文档介绍使用方式时,再回顾之前项目的代码,只能说没出问题比较庆幸。 官方文档介绍的 阅读全文
摘要:
前言 上次分享了一些开发过程中常用的功能,但如果到真实环境中,其实还需要一些额外的配置,比如说跨域、缓存、配置SSL证书、高可用等,老规矩,还是挑几个平时比较常用的进行演示分享。上篇详见Nginx超详细常用功能演示,够用啦~~~。 正文 1. 跨域 跨域是因为浏览器同源策略的保护,不能直接执行或请求 阅读全文
摘要:
前言 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx在部署网站时,可以说是小伙伴们的首选,当然不能说全部项目都使用,对于一些小项目,直接IIS(.Net) 阅读全文
摘要:
前言 对于运行中的系统,可以说百分百的小伙伴会经常遇见以下问题: 网络不通,突然又好了; 服务器宕机了; 调用服务接口超时了; 调用接口报错啦; 通讯信息发送失败需要重发; 以上只是列举了一些常遇到的问题,对于一些小项目可能简单的处理一下就OK了(比如重启或是重新发布),而对于微服务架构的项目,可能 阅读全文
摘要:
前言 **网关(Gateway)**在微服务架构中至关重要,可以将其理解为是外部客户端(前端、MVC后台等调用方)与后台服务的连接点,通过这层可以做统一的处理,比如路由、身份认证和授权、服务治理等; 网关的好处: 统一入口,调用方(客户端)不在为调哪个服务而头大,统一入口即可,由网关路由到对应后台服 阅读全文
摘要:
前言 上一篇简单介绍了Consul,并使用开发模式(dev)进行流程演示,但在实际开发中需要考虑Consul的高可用和操作安全性,所以接着来聊聊集群和ACL的相关配置,涉及到的命令会在环境搭建过程中详细介绍。 正文 关于集群,第一反应就是多搞几台机器(或者容器等),将其关联在一块,提供功能即可;在搭 阅读全文
摘要:
前言 小伙伴一定遇到过这样反馈:这页面加载数据太慢啦,甚至有的超时了,用户体验极差,需要赶紧优化; 反馈等同于投诉啊,多有几次,估计领导要找你谈话啦。 于是不得不停下手里头的活,赶紧进行排查,最终可能是程序处理的问题、也可能是并发量大导致排队问题、也可能是SQL查询性能导致等;而在很多时候,SQL查 阅读全文
摘要:
前言 Redis是目前非常流行的缓存数据库啦,其中一个主要作用就是为了避免大量请求直接打到数据库,以此来缓解数据库服务器压力;用上缓存难道就高枕无忧了吗?no,no,no,没有这么完美的技术, 缓存穿透、缓存雪崩、缓存击穿这些问题都得好好聊聊。 正文 1. 缓存穿透 1.1 简要描述 缓存穿透是指查 阅读全文
摘要:
前言 原计划打算在春节期间多分享几篇技术文章的,但到最后一篇也没出,偷懒了吗?算是吧,过程是这样的:每次拿出电脑,在孩姥姥家的院子总有阳光沐浴,看不清屏幕,回屋又有点冷(在强行找理由),于是又带着娃遛弯去啦。哪有那么多理由,就是想偷个懒;不过后面几天把计算机组成原理简单过了过,后面整理整理再单独给小 阅读全文
摘要:
前言 接着授权模式聊,这次说说**Authorization Code(授权码)模式,熟悉的微博接入、微信接入、QQ接入都是这种方式(这里说的是oauth2.0的授权码模式),从用户体验上来看,交互方式和Implicit**没啥改变,随便找个网站瞅瞅,如慕课网(很不错的学习网站)的登录流程,见下图: 阅读全文
摘要:
假装很“优秀” 马上就过年啦,今年与往常不一样,硬是坚挺到公司放假的最后一天,依然淡定的撸着代码: 这么“敬业”,不给个“优秀”吗?给个毛,就这。原以为最后一天大家都赶着回家呢,当部门组织拍拜年视频的时候,发现还有好多小伙伴依然坚挺着呢,哈哈哈,大意啦,大意啦(不过要比离家远,估计我可能是前三)。 阅读全文
摘要:
前言 哨兵模式虽然让读写分离更加高可用,但单台服务器由于本身的内存和CPU瓶颈,对于高并发和大数据业务的应用场景还是远远不能满足;对于这种情况,有点经验的小伙伴会毫不犹豫的想到集群,搞他好几个节点,负载均衡再加上故障转移,岂不美哉。是的,就是这个理,接下来玩玩。 正文 集群,相信这个词小伙伴应该听的 阅读全文
摘要:
前言 上一篇Resource Owner Password Credentials模式虽然有用户参与,但对于非信任的第三方的来说,使用这种模式是有风险的,所以相对用的不多;这里接着说说implicit隐式模式,这种模式比较适合于纯前端客户端,比如Vue、Angular、React项目等,相对来说整个 阅读全文
摘要:
前言 主从复制的实现在上一篇已经分享过,虽然主从复制本身的确让读写分离更加高效,但是对于整体高可用存在很大的劣势:当主节点宕机了之后还需要人为重新进行主从关系配置;这不是开玩笑嘛,这样人为干预,故障恢复不及时,损失就难免啦。谁维护谁不爽,睡个觉都提心吊胆。 找个哨兵站岗,专门用来监控主服务器,一旦有 阅读全文
摘要:
前言 上一篇对RabbitMQ的流程和相关的理论进行初步的概述,如果小伙伴之前对消息队列不是很了解,那么在看理论时会有些困惑,这里以消息模式为切入点,结合理论细节和代码实践的方式一起来学习。 正文 常用的模式有Simple、Work、Fanout、Direct、Topic、Headers,可以通过设 阅读全文
摘要:
前言 关于消息中间件的应用场景,小伙伴们应该都耳熟能详了吧,比如经常提到的削峰填谷、分布式事务、异步业务处理、大数据分析等等,分布式消息队列成为其中比较关键的桥梁,也就意味着小伙伴们得掌握相关技能;当下相对比较热门的消息中间件有RabbitMQ、Kafaka、RocketMQ、ActiveMQ等,在 阅读全文
摘要:
前言 有这样一种场景,就是新项目已经集成了认证中心,或者是都用了统一的认证方式(比如现在常用的JWT),这样对于项目之间的对接就显得比较方便,至少在认证这块还是能减少一些工作量的。但当上线的老项目需要对接新项目时,由于有些老项目通常会个性化的生成Token或者是通过一些标识传到后台进行认证,再加上老 阅读全文
摘要:
前言 在很多项目中经常会出现需要动态解析表达式和计算的场景,比如一些自动审核规则,或者是一些变量的值通过维护的公式在运行过程中动态算出;由于场景需求,都需要比较灵活的配置对应的表达式,然后希望在需要的时候能根据维护的表达式计算出对应的值;刚好这块和同事聊天的时候说到Flee,感觉挺好用,赶紧来和小伙 阅读全文
摘要:
前言 一个项目上线了两个月,除了一些反馈的优化和小Bug之外,项目一切顺利;前期是属于推广阶段,可能使用人员没那么多,当然对于项目部署肯定提前想到并发量了,所以早就把集群安排上,而且还在测试环境搞了一下压测,绝对是没得问题的;但是,就在两个月后的一天,系统突然跑的比乌龟还慢,投诉开始就陆续反馈过来了 阅读全文
摘要:
前言 随着系统架构的演变,有很多名词也随之涌现,如:微服务、灰度发布、资源隔离、容器、领域/集成事件等,听着的确高大上,让很多小伙伴有一种无法征服的感觉;其实很多东西可能之前就已经用过了,只是名字不这么叫而已,就算没应用上也别慌,现在很多轮子都很成熟,用起来很容易上手的。这里就来说说比较常见的领域事 阅读全文
摘要:
前言 如今缓存成为了优化网站性能的首要利器,缓存使用的好,不仅能让网站性能提升,让用户体验变好,而且还能节约成本(增加一台缓存服务器可能就节约好几台机器);那平时小伙伴们都使用哪些缓存方式呢?这里就来和小伙伴们一起来回顾一下。 正文 缓存的作用其实很明确,如下两方面: 提升数据的获取速度 通常用在获 阅读全文
摘要:
前言 现在的项目对于数据库操作基本上都是使用封装好的ORM框架,这样开发效率相对来说有所提高。但由于框架的封装,会自动生成SQL语句,这让一些小伙伴对SQL产生了一种陌生感(基本不写SQL),导致排查业务执行缓慢问题时比较盲目;其实本质还是SQL,而对于SQL的优化,索引是否使用上是一个关键的点,所 阅读全文
摘要:
前言 在项目开发过程中,后台任务很多场景都少不了,比如:大量数据处理或分析、定时同步数据、大量数据的异步导出、消息补偿等等,在.NET中Quartz-NET、Hangfire是很多小伙伴的首要选择,但如果要弄一个通用、灵活配置的调度平台,还得花很多时间进行封装;当然也有一些小伙伴造了轮子,用起来也还 阅读全文
摘要:
前言 现在的项目,在操作数据库的时候,我都喜欢用ORM框架,其中EF是一直以来用的比较多的;EF 的封装的确让小伙伴一心注重业务逻辑就行了,不用过多的关注操作数据库的具体细节。但是在某些场景会选择执行SQL语句,比如一些复杂的插入或报表查询等,其实不管用什么方式执行SQL语句,防止SQL注入是必须的 阅读全文