科技新闻

服务的协作:服务间的消息传递——《微服务设计》读书笔记

天大地大妈咪最大 提交于 2020-03-15 13:02:37
在 微服务集成——《微服务设计》读书笔记 文章中,我们说过服务间的消息传递有几种方式,一种是请求/响应技术,另一种是基于事件的机制。 RPC(远程过程调用) RPC是Remote Procedure Call的简称。 这是请求/响应技术的一种,它使用本地调用的方式和远程进行交互,如SOAP、Thrift等,比如我们常使用的WebService和Java RMI,就是这种类型。它先在本地生成桩代码,然后通过桩代码进行远程调用。 RPC会带来一些问题,如Java RMI,其耦合性较紧,同时RPC会对调用进行大量的封装和解封装,同时修改接口时会造成服务的提供方和调用方都要修改。 REST REST是受Web启发而产生的一种架构风格,REST风格包含的内容很多,Richardson的成熟度模型(http://martinfowler.com/articles/richardsonMaturityModel.html),其中有对REST不同风格的比较。 REST本身并没有提到底层应该使用什么协议,最常用的是HTTP,HTTP本身提供了很多功能,这些功能对于实现REST风格非常有用,比如HTTP的动词(GET、POST、PUT等)就能很好地和资源一起使用。 在使用REST时,传输的数据格式是XML还是JSON,这个没有一个定论。 基于HTTP的REST也有缺点:1.它无法帮你生成桩代码,2

Java 远程调试

拜拜、爱过 提交于 2020-03-15 12:45:11
用处 在单体应用时代,当代码已经部署到生产或者测试环境的时候,由于特殊需求,我们要对代码进行debug来调查问题 在微服务开发中,你开发的服务可能会依赖数据库、消息队列等资源,也有可能依赖其他的服务,这些服务又有新的依赖,这种情况下,在自己的开发环境中完全模拟测试、线上环境变的极其困难,所以无法直接对本机代码进行debug 在以上两种情况下,就需要进行远程debug 原理 线上/测试环境上的应用额外开通一个端口号,例如5005 本机启动一个debug进程,通过JDPA(Java Platform Debugger Architecture) attach到线上/测试环境中正在运行的进程,就可以进行debug 要保证本机和线上/测试环境代码一致性,否则不能进行debug 在debug过程中,可以通过修改变量值等措施修改debug流程 例子 例子介绍 本应用是一个简单的spring boot工程,只有一个简单的controller,里面一个restful API,接收外部请求,返回OK作为调用结果 @RestController public class ClientIpController { @RequestMapping("/health") public String health(HttpServletRequest request) { String result =

日本已开始提供10Gbps万兆光纤接入服务

早过忘川 提交于 2020-03-15 12:02:48
5G的理论下载速度已达千兆,所以,有线宽带怎敢落后。据外媒报道,日本运营商NTT East和NTT West已开始提供10Gbps万兆光纤接入服务,月费约380元人民币。 不过,万兆接入需要配套FLET Hikari Cross无线路由器,月费500日元,约31元人民币。官方称,这款路由支持Wi-Fi6。 目前,NTT East的万兆接入已覆盖日本东京足立区、杉井区、江户川、练马区、世田谷区、葛饰区、大田区和板桥区,NTT West则面向大阪和名古屋服务。 考虑到2020东京奥运会将于72月24日到8月9日举办,4K/8K流媒体服务占主导,相信万兆宽带届时将大展拳脚。 对比之下,国内千兆宽带月费通常也在200元以上,不过多以4G/5G融合套餐的形式出现。 来源: oschina 链接: https://my.oschina.net/linuxmeng/blog/3195244

git提交代码

这一生的挚爱 提交于 2020-03-15 11:54:25
Git提交代码的流程——新手适用 pull:是下拉代码,相等于将远程的代码下载到你本地,与你本地的代码合并 push:是推代码,将你的代码上传到远程的动作 完整的流程是: 第一种方法:(简单易懂) 1、git add .(后面有一个点,意思是将你本地所有修改了的文件添加到暂存区) 2、git commit -m""(引号里面是你的介绍,就是你的这次的提交是什么内容,便于你以后查看,这个是将索引的当前内容与描述更改的用户和日志消息一起存储在新的提交中) 3、git pull origin master 这是下拉代码,将远程最新的代码先跟你本地的代码合并一下,如果确定远程没有更新,可以不用这个,最好是每次都执行以下,完成之后打开代码查看有没有冲突,并解决,如果有冲突解决完成以后再次执行1跟2的操作 4、git push origin master 将代码推至远程就可以了 第二种方法: 1、git stash (这是将本地代码回滚值至上一次提交的时候,就是没有你新改的代码) 2、git pull origin master(将远程的拉下来) 3、git stash pop(将第一步回滚的代码释放出来,相等于将你修改的代码与下拉的代码合并) 然后解决冲突,你本地的代码将会是最新的代码 4、git add . 5、git commit -m"" 6、git push origin

开放式社交公共网络之微观隐私保护

怎甘沉沦 提交于 2020-03-15 10:43:29
开放式社交公共网络之微观隐私保护   OSPN网络是基于非对称加密密码学设计的。非对称加密算法的私钥一般是要求本地加密存储,每次使用时进行解密。将其用在高频的社交领域,如果每一次发送消息接收消息都需要输入密码进行解密,势必会造成极差的用户体验。而不加密存储,又会存在信息泄露的风险。   为此我们采用了双私钥来解决这一问题,OSPN的账户中包含一个公钥和另一个公钥的hash。当需要更换私钥时,需要使用另一把暗key,具体操作请参阅《开放式社交网络通信协议》。 注:双私钥中的明私钥在移动端同样需要进行加密保存。采用这种设计是在发生明私钥泄露的情况下可以方便于补救。   对于用户的昵称、头像等的归属权,我们认为它们是归属于用户所有。腾讯这样的企业,他们会主张这些用户资料归属于腾讯所有,而禁止抖音使用。为此我们在设计时决定更新用户资料指令的发出点,是由用户发出,而不是由服务器发出,服务器仅起到转发的作用,从而明确了归属权属于用户所有。   人类的私密聊天特点是,我告诉了你一句话,当你把这句话告诉第三人“是我说的”的时候,这个第三人是无法判断这句话是否是我说的。 我们的主张是在网络上的私密聊天也要达到这样的效果,私密聊天除了你们两人其他人是不应该知道的。但是无法保证聊天记录不被传出(比如以截图的形式,或者是出示给第三人看的形式),因此我们希望这些聊天记录第三人是无法判断的,它不能被作为证据

Vue2.x中的父子组件相互通信

岁酱吖の 提交于 2020-03-15 10:23:58
原理 在 Vue.js 中,父子组件的关系可以总结为 props down, events up 。 父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息。看看它们是怎么工作的。 业务场景 这里指的是 直接父子级 关系的通信 美女(子组件)将消息发送给大群(父组件) 大群(父组件)收到美女发送的消息后再回个信息给美女(子组件) 父组件 template <template> <div> <p>群消息girl:</p> <div> {{ somebody }} 说: 我 {{ age }} 了。 </div> <hr> <v-girl-group :girls="aGirls" :noticeGirl="noticeGirl" @introduce="introduceSelf"></v-girl-group> </div> </template> 注意的点: 这里在父组件使用 v-on 来监听子组件上的自定义事件($emit的变化),一旦发生变化 noticeGirl 方法就会触发 <script> import vGirlGroup from './GirlGroup' export default { name: 'girl', components: { vGirlGroup }, data () { return { aGirls:[{

WSDL概述

喜夏-厌秋 提交于 2020-03-15 10:21:06
WSDL概述 WSDL就是描述XML Web服务的标准XML格式,WSDL由Ariba、Intel、IBM和微软等开发商提出。它用一种和具体语言无关的抽象方式定义了给定Web服务收发的有关操作和消息。就其定义来说,你还不能把WSDL当作一种对象接口定义语言,例如,CORBA或COM等应用程序体系结构就会用到对象接口定义语言。 WSDL保持协议中立,但它确实内建了绑定SOAP的支持,从而同SOAP建立了不可分割的联系。所以,当我在这篇文章中讨论WSDL的时候,我会假定你把SOAP作为了你的通讯协议。 WSDL协议已经被提交给了Internet标准组织W3C审批,目前还处于“确认提交”状态。W3C维持着正规的标准化系统同时提交提案必须经过确定的一套批准过程才能最终成为官方协议。在这种情况下,WSDL的地位,照外行看,至少标准组织在考虑让其成为将来可能标准中的一部分。如果你对这方面的情况感兴趣,或碰巧是一位特关心结果的“失眠症患者”,那么你不妨到W3C网站上去读读有关的建议标准。 用WSDL说明服务 作为一种基于XML的标准,如果你对XML具有一定的了解,那么WSDL的结构对你就不会陌生了。WSDL文档由服务用来描述数据类型的一组元素、服务可以收到的“消息”以及关联每条消息的SOAP绑定组成。 清单A就是一份简单的WSDL文档,该文档同W3C网站公布的WSDL示范文本是一样的

websocket的重连

牧云@^-^@ 提交于 2020-03-15 09:31:37
在做图片的传输时,会经常的断开和卡顿,下面重连的方法解决了经常断开的问题 // 图像预览 websocket var ws; // 是否有ajax的返回消息时调用, 如果有返回值 -> 值为true, 执行重连, 否则 -> 为 false,就不会执行重连 var flag; // 图片 var img = ""; function createWebSocket(url) { flag = true; try {     // 如果websocket不存在的时候 实例化websocket,并且调用websocket的函数 if (ws == null || typeof ws !== WebSocket) { ws = new WebSocket(url); initEventHandle(); } else { reconnect(url); } } catch (e) { $('#image').attr('src', './images/480x270.png'); } } // 判断是否有图像传回来 var hasImage = false; function initEventHandle() { ws.onclose = function (event) { if (flag) { reconnect(wsUrl); } else { } }; ws.onerror

python 并发编程之多进程

a 夏天 提交于 2020-03-15 04:30:33
一、数据共享 1.进程间的通信应该 尽量避免共享数据的方式 2.进程间的数据是独立的, 可以借助队列或管道实现通信,二者都是基于消息传递的。 虽然进程间数据独立,但可以用过Manager实现数据共享,事实上Manager的功能远不止于此。 命令就是一个程序,按回车就会执行(这个只是在windows情况下) tasklist 查看进程 tasklist | findstr pycharm #(findstr是进行过滤的),|就是管道(tasklist执行的内容就放到管道里面了, 管道后面的findstr pycharm就接收了) 二、进程池 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。 多进程是实现并发的手段之一,需要注意的问题是: 很明显需要并发执行的任务通常要远大于核数 一个操作系统不可能无限开启进程,通常有几个核就开几个进程 进程开启过多,效率反而会下降(开启进程是需要占用系统资源的,而且开启多余核数目的进程也无法做到并行) 例如当被操作对象数目不大时,可以直接利用multiprocessing中的Process动态成生多个进程,十几个还好,但如果是上百个,上千个。。。手动的去限制进程数量却又太过繁琐,此时可以发挥进程池的功效。 那么什么是进程池呢?进程池就是控制进程数目 ps

Redis源码阅读(一)事件机制

Deadly 提交于 2020-03-15 04:24:54
Redis 源码阅读(一)事件机制   Redis 作为一款 NoSQL 非关系内存数据库,具有很高的读写性能,且原生支持的数据类型丰富,被广泛的作为缓存、分布式数据库、消息队列等应用。此外 Redis 还有许多高可用特性,包括数据持久化,主从模式备份等等,可以满足对数据完整性有一定要求的场景。   Redis 的源码结构简单清晰,有大量材料可以参阅;通过阅读 Redis 源码,掌握一些常用技术在 Redis 中的实现,相信会对个人编程水平有很大帮助。这里记录下我阅读 Redis 源码的心得。从我自己比较关心的几个技术点出发,每个技术点都是来自个人使用 Redis 过程中产生的问题。这里也参考了黄建宏老师的《 Redis 设计与实现》部分内容,不得不说参考这本书再结合源码注释,看起来绝对事半功倍。   当初选用 Redis 的时候,很大程度上是由于 Redis 的并发性能很高,可以支持大量并发请求。那 Redis 是如何支持高并发请求的呢?这里就引入了第一个技术点,事件处理机制。在 Redis 中使用了单线程的 Reactor 模式,属于 I/O 多路复用的一种常见实现模式。这里简单介绍下 Reactor 模式。 1. Reactor 模式 从网上切一个类图,简单描述一下Reactor模式的主体结构 基本概念: Handle : I/O 操作的基本文件句柄,在 linux 下就是