1分钟了解区块链的本质

区块链,比特币这些概念最近都很火,但很多人搞不清楚它究竟是啥,准备从技术的角度,从架构的角度,用通俗的语言谈谈楼主的理解。

 

究竟啥是区块链?

:一句话,区块链是一个存储系统。

更细一点,区块链是一个没有管理员,每个节点都拥有全部数据的分布式存储系统

 我有几张阿里云幸运券分享给你,用券购买或者升级阿里云相应产品会有特惠惊喜哦!把想要买的产品的幸运券都领走吧!快下手,马上就要抢光了。

通常所见的存储系统是啥样的?

640?wx_fmt=png&wxfrom=5&wx_lazy=1

:如上图,一块空间存储数据,一个软件管理数据,提供接口写入数据,这是存储系统,例如mysql

 

普通的存储系统会有什么常见的问题?

:常见的有两个问题:

  • 数据存在一个地方很危险,空间损坏数据就丢了,用技术的话说即“数据不高可用

  • 写入点只有一个,用技术的话说即“单点控制

 

如何保证数据高可用?

640?wx_fmt=png&wxfrom=5&wx_lazy=1

:解决高可用要“冗余”,如上图,如果能把数据冗余到多个地方,就能保证高可用,一个地方的数据挂了,另外的地方仍存有数据。例如mysql主从集群,以及磁盘的RAID都是这个原理。


这里需要强调两点:

  • 数据冗余往往会引发一致性问题,例如mysql主从集群中的读写延时问题

  • 数据冗余往往会降低写入效率,因为同步数据需要消耗额外的资源

画外音:更详细的,可阅读《互联网架构,如何保证高可用》。

 

可不可以多点写入?

640?wx_fmt=png

答:可以。可以多个节点都实施写入,例如mysql双主集群,又或者多机房多活数据中心。这里要强调的是,多节点写入往往会引发写写冲突的一致性问题。

画外音:双主一致性,可阅读《mysql双主架构如何保证一致性》。


多点控制写入之后,其实出现了多中心控制,在数据不一致的时候,往往需要有一个算法来协商如何处理不一致数据。

 原文链接

你必须了解的session的本质

10-21

[b]必须了解的session的本质[/b]rnrn有一点我们必须承认,大多数web应用程序都离不开session的使用。这篇文章将会结合php以及http协议来分析如何建立一个安全的会话管理机制。我们先简单的了解一些http的知识,从而理解该协议的无状态特性。然后,学习一些关于cookie的基本操作。最后,我会一步步阐述如何使用一些简单,高效的方法来提高你的php应用程序的安全性以及稳定行。rnrn我想大多数的php初级程序员一定会认为php默认的session机制的安全性似乎是有一定保障的,事实恰好相反 – php团队只是提供了一套便捷的session的解决方案提供给程序员使用,至于安全性的话,应该由程序员来加强,这是应用程序开发团队的责任。因为,这里面的方法很多,可以这么说吧,没有最好,只有更好。攻击的方式在不断变化,防守方也需要不断变招,所以,我个人认为php团队的做法还是比较明智的。rnrn[b]无状态性[/b]rnrnHttp是一种无状态性的协议。这是因为此种协议不要求浏览器在每次请求中标明它自己的身份,并且浏览器以及服务器之间并没有保持一个持久性的连接用于多个页面之间的访问。当一个用户访问一个站点的时候,用户的浏览器发送一个http请求到服务器,服务器返回给浏览器一个http响应。其实很简单的一个概念,客户端一个请求,服务器端一个回复,这就是整个基于http协议的通讯过程。rnrn因为web应用程序是基于http协议进行通讯的,而我们已经讲过了http是无状态的,这就增加了维护web应用程序状态的难度, 对于开发者来说,是一个不小的挑战。Cookies是作为http的一个扩展诞生的,其主要用途是弥补http的无状态特性,提供了一种保持客户端与服务器端之间状态的途径,但是由于出于安全性的考虑,有的用户在浏览器中是禁止掉cookie的。这种情况下,状态信息只能通过url中的参数来传递到服务器端,不过这种方式的安全性很差。事实上,按照通常的想法,应该有客户端来表明自己的身份,从而和服务器之间维持一种状态,但是出于安全性方面的考虑,我们都应该明白一点 – 来自客户端的信息都是不能完全信任的。rnrn尽管这样,针对维持web应用程序状态的问题,相对来说,还是有比较优雅的解决方案的。不过,应该说是没有完美的解决方案的,再好的解决方案也不可能适用所有的情况。这篇文章将介绍一些技术。这些技术可以用来比较稳定地维持应用程序的状态以及抵御一些针对session的攻击,比如会话劫持。并且你可以学习到cookie是怎样工作的,php 的session做了那些事情,以及怎样才能劫持session。rnrnH[b]TTP 概览[/b]rnrn如何才能保持web应用程序的状态以及选择最合适的解决方案呢?在回答这个问题之前,必须得先了解web的底层协议 – Hypertext Transfer Protocol (HTTP)。rn当用户访问http://example.com这个域名的时候,浏览器就会自动和服务器建立tcp/ip连接,然后发送http请求到example.com的服务器的80端口。该个请求的语法如下所示:rnrn不能发代码格式,详细的请看这篇文章吧: http://www.360weboy.com/php/session/%E4%BD%A0%E5%BF%85%E9%A1%BB%E4%BA%86%E8%A7%A3%E7%9A%84session%E7%9A%84%E6%9C%AC%E8%B4%A8.html

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试