Docker 实战总结
https://www.cnblogs.com/leozhanggg/p/12039953.html
目录
Docker 简介
Docker 优势
Docker 基本概念
Docker 安装使用
Docker 常用命令
Docker 镜像构建
Docker 本地仓库
Docker 图形管理工具 Portainer
Docker 集群管理工具 Swarm
Docker 运维流程图
Docker 配置管理
Docker 后续问题
Docker 报错解决
Docker 简介
Docker 是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的 docker 应用中,可以实现快速部署。
简单的理解,docker 就是一个软件集装箱化平台,就像船只、火车、卡车运输集装箱而不论其内部的货物一样,软件容器充当软件部署的标准单元,其中可以包含不同的代码和依赖项。
按照这种方式容器化软件,开发人员和 IT 专业人员只需进行极少修改或不修改,即可将其部署到不同的环境,如果出现的故障,也可以通过镜像,快速恢复服务。
Docker 优势
特性优势
资源优势 ...
RabbitMQ 知识点
https://mp.weixin.qq.com/s/r8k1TN46Pk61qTjZ8ljsEQ
目前,主流的消息中间件主要有:ActiveMQ、Kafka、RabbitMQ、RocketMQ 等等…而我们今天的主角是:RabbitMQ。RabbitMQ 是开源基于 erlang 语言开发,具有高可用高并发的优点,适合集群消息代理和队列服务器,它是基于 AMQP 协议来实现的。AMQP 的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。RabbitMQ 支持多种语言,有消息确认机制和持久化机制,保证数据不丢失的前提做到可靠性、可用性。
消息与消息队列
消息(Message)是指应用于应用之间传送的数据,消息的类型包括文本字符串、JSON、XML、内嵌对象等等…
所谓 消息中间件 / 消息队列(Message Queue Middleware,简称 MQ)是利用高效可靠的消息传递机制进行数据交流,同时可以基于数据通信来进行分布式系统的继承。消息中间件一般有两种传递模式:点对点(Point-to-Point)模式和发布/订阅(Pub/Sub)模式 ...
Redis 知识点
https://juejin.im/post/5dcaebea518825571f5c4ab0
缓存知识点
缓存有哪些类型?
缓存是高并发场景下提高热点数据访问性能的一个有效手段,在开发项目时会经常使用到。
缓存的类型分为:本地缓存、分布式缓存和多级缓存。
本地缓存:
本地缓存就是在进程的内存中进行缓存,比如我们的 JVM 堆中,可以用 LRUMap 来实现,也可以使用 Ehcache 这样的工具来实现。
本地缓存是内存访问,没有远程交互开销,性能最好,但是受限于单机容量,一般缓存较小且无法扩展。
分布式缓存:
分布式缓存可以很好地解决这个问题。
分布式缓存一般都具有良好的水平扩展能力,对较大数据量的场景也能应付自如。缺点就是需要进行远程请求,性能不如本地缓存。
多级缓存:
为了平衡这种情况,实际业务中一般采用多级缓存,本地缓存只保存访问频率最高的部分热点数据,其他的热点数据放在分布式缓存中。
在目前的一线大厂中,这也是最常用的缓存方案,单靠单一的缓存方案往往难以撑住很多高并发的场景。
淘汰策略
不管是本地缓存还是分布式缓存,为了保证较高性 ...
微服务之间的最佳调用方式
https://blog.csdn.net/weixin_38748858/article/details/101062272
在微服务架构中,需要调用很多服务才能完成一项功能。服务之间如何互相调用就变成微服务架构中的一个关键问题。服务调用有两种方式,一种是 RPC 方式,另一种是事件驱动(Event-driven)方式,也就是发消息方式。消息方式是松耦合方式,比紧耦合的 RPC 方式要优越,但 RPC 方式如果用在适合的场景也有它的一席之地。
耦合的种类:
我们总在谈耦合,那么耦合到底意味着什么呢?
时间耦合:客户端和服务端必须同时上线才能工作。发消息时,接受消息队列必须运行,但后台处理程序暂时不工作也不影响。
容量耦合:客户端和服务端的处理容量必须匹配。发消息时,如果后台处理能力不足也不要紧,消息队列会起到缓冲的作用。
接口耦合:RPC 调用有函数标签,而消息队列只是一个消息。例如买了商品之后要调用发货服务,如果是发消息,那么就只需发送一个商品被买消息。
发送方式耦合:RPC 是点对点方式,需要知道对方是谁,它的好处是能够传回返回值。消息既可以点对点,也可以用广播的 ...
Cookie, Session, Token 对比
https://mp.weixin.qq.com/s/AlUN2dUKi07k9VWphLsMXA
Cookie
Cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。
**Cookie 由服务器生成,发送给浏览器,浏览器把 Cookie 以 K/V 形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该 Cookie 发送给服务器。**由于 Cookie 是存在客户端上的,所以浏览器加入了一些限制确保 Cookie 不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的 Cookie 数量是有限的。
Session
Session 从字面上讲,就是会话。这个就类似于你和一个人交谈,你怎么知道当前和你交谈的是张三而不是李四呢?对方肯定有某种特征(长相等)表明他就是张三。
Session 也是类似的道理,服务器要知道当前发请求给自己的是谁。为了做这种区分,**服务器就要给每个客户端分配不同的“身份标识”,然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,服务器就知道这个请求来自于谁了。**至于 ...
Windows 内核原理 - 同步 I/O 与异步 I/O
https://www.cnblogs.com/Jack-Blog/p/11385686.html
本片文章主要讲解同步 I/O 与异步 I/O 相关知识,希望通过编写本篇文章为起点,对 Windows 内核原理知识进行学习与梳理。发现并弥补遗漏的知识点并加以学习。同时通过理解 Windows 内核原理,设计出更好、更合理的应用程序。
I/O
I/O 即输入输出。在现在操作系统,输入输出是计算机完整功能必不可少的一部分。处理器负责各种计算任务,然后通过各种输入输出设备与外界进行交互。常见的输入输出设备包括键盘、鼠标、显示器、硬盘、网络适配器接口等。有了硬件设备,在软件层面上,使得操作系统通过以一致的方式与设备驱动交互从而的操控硬件设备。而应用程序通过统一的接口与系统内核进行交互。
Windows 从一开始就设计了可扩展的 I/O 接口。在应用层通过统一的 Win32 API,将 I/O 请求分配给正确的设备驱动程序。设备驱动程序调用设备控制器来操控硬件。而内核通过硬件抽象层与硬件进行交互。硬件抽象层提供了供内核和驱动调用的例程。
例程就是系统提供的 API 或服 ...
使用 .NET Core 创建 Windows 服务
作者:Dotnet Core Tutorials
原文:
Part 1 - The “Microsoft” Way: https://dotnetcoretutorials.com/2019/09/19/creating-windows-services-in-net-core-part-1-the-microsoft-way/
Part 2 - The “Topshelf” Way: https://dotnetcoretutorials.com/2019/09/27/creating-windows-services-in-net-core-part-2-the-topshelf-way/
Part 3 – The “.NET Core Worker” Way: https://dotnetcoretutorials.com/2019/12/07/creating-windows-services-in-net-core-part-3-the-net-core-worker-way/
译者:Lamond Lu
译文:
Part 1 - 使用官方推荐方式: https://w ...
I/O 中断原理
https://www.cnblogs.com/Jack-Blog/p/12038716.html
本篇文章会对中断操作的原理进行说明。
什么是中断
中断指当出现需要时,CPU 暂时停止当前程序的执行转而执行处理新情况的程序和执行过程。即在程序运行过程中,系统出现了一个必须由 CPU 立即处理的情况,此时,CPU 暂时中止程序的执行转而处理这个新的情况的过程就叫做中断。
我们知道 CPU 是按指令顺序进行执行的,操作系统每过大约 15ms 会发生一次线程调度(Windows 下),根据线程优先级先调度优先级高的线程。但是实际情况并没有那么简单,若我们接收到一个网络请求,如果要等当前线程执行完或 15ms 线程调度之后才去处理网络请求,网卡缓冲区很有可能会被占满,此时就发生了丢包。
中断类型
中断分为硬件中断和软件中断。
硬件中断
硬件中断即为硬件发出的中断信号,如 I/O 中断和硬件失效中断。
I/O 中断:由 I/O 控制器产生,用于发送信号通知操作完成等信号。
硬件失效中断:如掉电或存储器奇偶错之类的故障。
软件中断
软件中断即为非硬件发出的中断信 ...
用故事说透 HTTPS
https://mp.weixin.qq.com/s/MfvUuitrF8MN16nxyZNB8A
故事中的主演:
小华今年上大一,这是她第一次离开父母,独自一人到北京上学。今天妈妈的生日,想了想要给妈妈一个祝福,便给妈妈发了条消息:
妈妈收到这条消息非常开心,女儿这么忙还能记得自己的生日,两个人便开始聊了起来。妈妈知道女儿一直省吃俭用,决定给女儿打点钱过去。
小黑是个黑客,专搞一些“偷鸡摸狗”的事情,他已经监听了这对母女的对话。一直看着她们唠家常,都快睡着了。
直到看到母女提到钱的事情,立马打起精神,决定搞一笔。然后他截获了小华的消息,替换成自己精心准备的内容给小华的妈妈发过去了。
小华的妈妈随后就把钱打给了小华,未曾想到母女二人的聊天内容尽在小黑的掌控之中。小黑拿到钱后就逃之夭夭了。
HTTP 协议是建立在 TCP 之上的,TCP 是否安全决定了 HTTP 是否安全。HTTP的报文内容并未加密,容易被监听和篡改。小黑就监听了母女二人的聊天内容,并对内容进行了篡改,伪装成女儿进行聊天。所以 HTTP 有以下 3 个问题:
内容未加密,容 ...
为 WPF, UWP 及 Xamarin 实现一个简单的消息组件
https://mp.weixin.qq.com/s/PfFN_U0Yd6G3tZqpr1AwXg
本文目录:
介绍
Message - 消息
Subscription - 订阅
MessageHub - 消息总线
Subscribe - 订阅
Unsubscribe - 取消订阅
Publish - 发布
用法
从 NuGet 安装
创建 Message 类
订阅
发布 Message
参数
取消订阅
与 MvvmCross.Messenger 的差异
介绍
Sub-Pub 模式是一种常用的设计模式,用来在系统的不同组件中传递消息。发送消息的称为 Publisher,接收消息的称为 Subscriber。双方一般不需要知道对方的存在,由一个代理负责消息的传递。其结构如图所示:
最初的需求是我需要开发一个实现 Socket 发送/接收的WPF应用程序。首先,我应用 MVVM 模式创建了一个基本的 WPF 应用程序。然后,我创建了另一个项目来完成所有与 Socket 通信有关的工作。接下来,我必须将 Socket 项目集成到 ViewModel 项目中,以 ...