1. 引言 在最新的eShopOnContainers 3.0 中Ocelot 网关被Envoy Proxy 替换.下面就来简要带大家了解下Envoy,并尝试梳理下为什么要使用Envoy替代Ocelot. 2. Hello Envoy ENVOY IS AN OPEN SOURCE EDGE AND SERVICE PROXY, DESIGNED FOR CLOUD-NATIVE APPLICATIONS. Enovy(信使) 是一款开源的专为云原生应用设计的服务代理. 2.1. 快速体验 首先…
众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git,首先当然是学习Git的基本工作流.相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强大工具.使用Git时常用的命令有pull.commit.push等,貌似很简单.不过,有时你会遇到合并冲突的情况,Git这时会将冲突标记出来,需要你手工来解决.有时,你会不小心将代码提交到错误的分支上,并且又推送到了远程仓库.还有些时候,你需要切换到不同的分支,但Git却不让你这么做,因为还有未保存…
引言 在微服务大行其道的今天,Java阵营的Spring Boot.Spring Cloud.Dubbo微服务框架可谓是风水水起,也不得不感慨Java的生态圈的火爆.反观国内.NET阵营,微服务却不愠不火. 微软在其官网的架构体系上推出了eShopOnContainers微服务参考应用,用来推广基于.NET Core的微服务架构.我也将基于此来学习研究微服务,并分享自己的所学所得,形成一个系列,为.NET社区微服务的推广略尽绵薄之力. eShopOnContainers 简介 Easy to g…
每个IT安全专业人员应该知道的12种根本漏洞 每年,IT安全专业人员都面临着数千个新的软件漏洞和数百万个不同的恶意软件程序,但只有12种根本漏洞会让这些软件漏洞和恶意软件程序攻击你的设备.了解这些根本原因,你就可以阻止黑客攻击和恶意软件.以下是十二种根本漏洞: 1. Zero-days “零日漏洞”(zero-day)又叫零时差攻击,是指被发现后立即被恶意利用的安全漏洞.通俗地讲,即安全补丁与瑕疵曝光的同一日内,相关的恶意程序就出现.这种攻击往往具有很大的突发性与破坏性. (1) 攻击威胁 虽然…
引言 客户端与微服务的通信问题永远是一个绕不开的问题,对于小型微服务应用,客户端与微服务可以使用直连的方式进行通信,但对于对于大型的微服务应用我们将不得不面对以下问题: 如何降低客户端到后台的请求数量,并减少与多个微服务的无效交互? 如何处理微服务间的交叉问题,比如授权.数据转换和动态请求派发? 客户端如何与使用非互联网友好协议的服务进行交互? 如何打造移动端友好的服务? 而解决这一问题的方法之一就是借助API网关,其允许我们按需组合某些微服务以提供单一入口. 接下来,本文就来梳理一下eShop…
1. 引言 Ordering microservice(订单微服务)就是处理订单的了,它与前面讲到的几个微服务相比要复杂的多.主要涉及以下业务逻辑: 订单的创建.取消.支付.发货 库存的扣减 2. 架构模式 如上图所示,该服务基于CQRS 和DDD来实现. 从项目结构来看,主要包括7个项目: Ordering.API:应用层 Ordering.Domain:领域层 Ordering.Infrastructure:基础设施层 Ordering.BackgroundTasks:后台任务 Orderi…
1. 引言 事件总线这个概念对你来说可能很陌生,但提到观察者(发布-订阅)模式,你也许就很熟悉.事件总线是对发布-订阅模式的一种实现.它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的. 从上图可知,核心就4个角色: 事件(事件源+事件处理) 事件发布者 事件订阅者 事件总线 实现事件总线的关键是: 事件总线维护一个事件源与事件处理的映射字典: 通过单例模式,确保事件总线的唯一入口: 利用反射完成事件源与事件处理的初始化绑定: 提供统一的事件注册.取…
众所周知,Git目前已经是分布式版本控制领域的翘楚,围绕着Git形成了完整的生态圈.学习Git,首先当然是学习Git的基本工作流.相比于SVN等传统版本控制系统来说,Git是专为分布式版本控制而生的强大工具.使用Git时常用的命令有pull.commit.push等,貌似很简单.不过,有时你会遇到合并冲突的情况,Git这时会将冲突标记出来,需要你手工来解决.有时,你会不小心将代码提交到错误的分支上,并且又推送到了远程仓库.还有些时候,你需要切换到不同的分支,但Git却不让你这么做,因为还有未保存…
Tips 原文作者:Danny Markov 原文地址:12 Terminal Commands Every Web Developer Should Know About 终端是开发人员的武器库中最重要的生产力工具之一. 掌握它可以对你的工作流程产生非常积极的影响,因为许多日常任务减少到编写简单的命令并按Enter键即可. 在本文中,我们为你准备了一系列Unix命令,可帮助你充分利用终端. 其中一些是内置的,其他的是免费的工具,经过时间测试,有些命令可以在不到一分钟内安装完成. Tips 下文…
1. 引言 断断续续,感觉这个系列又要半途而废了.趁着假期,赶紧再更一篇,介绍下如何将eShopOnContainers部署到K8S上,进而实现大家常说的微服务上云. 2. 先了解下 Helm 读过我上篇文章ASP.NET Core 借助 K8S 玩转容器编排的同学,想必对K8S有了个大致了解.K8S引入了Pod.Service.ReplicationSet等概念,来简化容器的编排工作.然而,发布一个应用,依旧很繁琐,比如要定义Pod,要关心如何暴露Service,如何自动伸缩.更不用说一个包括…