UMBRELLA

未雨绸缪,举重若轻

认证(Authentication)、授权(Authorization)、凭证(credentials)

认证是指以当前用户的身份登录过后,系统便能追踪到他的身份,并做出符合相应业务逻辑的操作。即使用户没有登录,大多数系统也会追踪他的身份,只是当做来宾或匿名用户来处理,认证技术解决的是**我是谁?**的问题。

授权是指什么样的身份被允许访问某些资源,在获取用户身份后继续检查用的权限。单一的系统授权往往是伴随认证来完成的,但是开放API的多系统结构之下,授权可以有不同的系统来完成。例如OAuth。授权是解决我能做什么?的问题。

凭证,实现认证和授权的基础是需要一种媒介(credentials)来标记访问者的身份或权利,在现实生活中每个人都需要一张身份证才能访问自己的银行账户、结婚和办理养老保险等,这就是认证的凭证。在互联网世界中,服务器为每一个访问者颁发 session ID存放到cookie,这就是一种凭证技术。数字凭证还表现在方方面面,SSH登录的秘钥、JWT令牌、一次性密码等。用户账户也不一定存放在数据库中的一张表,在一些企业的IT系统中,对账户管理的权限有了更多的要求。所以账户技术(accounting)可以帮助我们使用不同的方式管理用户账户,同时具有不同系统之间共享账户的能力。

阅读全文 »

云平台的出现,深刻地影响了开发模式。无论是技术选型、系统架构、研发组织架构还是基础设施,都要为上云做好准备。

新开发模式

微服务(Micro Service)

对于上云的应用,微服务几乎是必然之选,因为云平台的基础功能之一就在于动态调配计算资源(CPU、内存等)。我们知道,在一个应用中的不同部分,所需要的计算资源是不一样的。比如“查看商品”功能的使用频度通常远高于“支付订单”。如果使用传统的方式,把所有功能都放在一个运行单元中(即单体应用),那么就只能将其整体扩容(复制多份,负载共担)才能实现,这将浪费大量的计算资源。而微服务技术可以把使用频度不同的功能拆分成不同的运行单元,每个运行单元称之为一个微服务。比如当“查看商品”功能的使用频度很高时,就可以只对它所在的运行单元进行扩容;当使用频度降低时,就可以释放不再需要的运行单元,把计算资源释放回资源池。但微服务也需要相应的技术储备。

阅读全文 »

构建Nginx基础镜像
  1. 使用apt或源码编译安装(1.configure; 2.make; 3.make install)
  2. 启用哪些模块
  3. nginx 初始化
  4. 启动容器

在宿主机当前目录下目录下创建一个Dockerfile-nginx的文件,用DockerFile命令编写构建nginx镜像操作流程。如下:

阅读全文 »

混沌工程(Chaos Engineering)

If something hurts, do it more often.

原则
  • Build a Hypothesis around Steaday State Behavior.
  • Vary Real-World events.
  • Run experiment in Production.
  • Automate Experiments to Run Continuously.
  • Minimize Blast Radius.

[http://principlesofchaos.org]

一些开源项目

[https://github.com/Netflix/chaosmonkey]
[https://github.com/easierway/service_decorators/blob/master/README.md]
[https://martinfowler.com/articles/lmax.html]

与没有条件分支的线性脚本相比,带有条件分支的脚本更加广泛且多用途,就像游戏与书籍的线性叙述相比具有多用途一样。那么,为什么我们需要条件语句呢?我们需要他们编写能够动态处理不同情况的脚本,并根据情况改变其运行方式。让我们从一个非常简单的条件开始,以帮助我们正确地开始新的一天:

1
2
3
4
5
6
7
8
$ read -p "Would you like some breakfast? [y/n] "
Would you like some breakfast? [y/n] n
$ if [[ $REPLY = y ]]; then
> echo "Here you go, an egg sandwich." # Branch #1
> else
> echo "Here, you should at least have a coffee." # Branch #2
> fi
Here, you should at least have a coffee.
阅读全文 »

假设我们要删除目录中的文件Downloads。根据我们迄今为止收集的知识,我们可以查看其中有哪些文件并删除它们:

1
2
3
4
5
6
7
8
9
$ cd ~/Downloads
$ ls
05 Between Angels and Insects.ogg
07 Wake Up.ogg
$ rm -v '05 Between Angels and Insects.ogg' '07 Wake Up.ogg'
removed '05 Between Angels and Insects.ogg'
removed '07 Wake Up.ogg'
$ ls
$
阅读全文 »

bash shell 是一个二进制程序,可以交互式或非交互式运行,通常在终端仿真器程序提供的基于文本的界面中运行。

当您从图形用户界面启动终端仿真器程序时,您将看到一个打开的窗口,其中包含文本。此窗口中显示的文本既是终端中运行的程序的输出,也是您使用键盘等发送到这些程序的字符。bash 程序只是可以在终端中运行的众多程序之一,因此请务必注意,bash 并不是使文本出现在屏幕上的原因。终端程序会处理这个问题,从 bash 中获取文本并将其放置在窗口中供您查看。终端可以对终端中运行的其他与 bash 完全无关的程序执行相同的操作,例如邮件程序或 IRC 客户端。

阅读全文 »

边缘计算

边缘计算是一种即将到来的计算方法,指的是一系列更接近用户的计算机网络和设备。边缘计算就是通过将数据存储在更靠近用户位置的位置来处理用户生成的数据。这确保了数据处理快速进行,从而确保大数据块得到无缝处理。这进一步帮助组织更快地做出决策。边缘计算技术的一些用例包括自动驾驶汽车、自动化零售店、机器人和智能设备。

边缘计算技术的组成部分:
  • 网络边缘:从技术上讲,边缘计算不需要单独的网络,更多的是现有网络的延伸;使连接变得容易。
  • 边缘设备:这些是可以快速连接到网络的设备,我们今天已经看到了此类设备的使用。例如,智能手表和无线/智能扬声器。
  • 本地基础设施:这些通常是服务器、路由器和其他用于连接网络的本地设备。

用创造性的方式来说,边缘计算技术帮助组织让数字世界中的事物出现在物理世界中。从商业角度来说,这意味着即使是最小的企业(例如实体公司)也可以利用在线数据和算法的力量,帮助他们为客户提供更好的体验。边缘计算有助于创建智能系统,帮助员工从这些系统中学习。如果我们观察的话,边缘计算存在于所有这些场景中。边缘计算技术通过实时数据处理帮助企业精确可靠地运行应用程序。

阅读全文 »

Kubernetes 是一个分布式系统,容易出现多种故障。对于组织而言,拥有高度可用的 Kubernetes 对于提供良好的客户体验至关重要。如果发生意外中断,如果您的集群在一个或多个组件发生故障的情况下无法继续运行,则停机可能会导致收入损失、声誉问题等。

通过在 Kubernetes 中实施 HA,可以降低停机风险,集群上运行的应用程序和服务仍然可供用户访问,并且系统可以快速从故障中恢复,无需人工干预。在较高级别上,这可以通过部署控制平面组件的多个副本以及跨越多个可用区或区域的网络拓扑来实现。

阅读全文 »
0%