前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ceph块设备使用iscsi

ceph块设备使用iscsi

作者头像
summerking
发布于 2023-04-27 12:36:51
发布于 2023-04-27 12:36:51
1.3K00
代码可运行
举报
文章被收录于专栏:summerking的专栏summerking的专栏
运行总次数:0
代码可运行

Ceph 块设备(也叫RBD)服务提供了大小可调、精炼、支持快照和克隆的块设备。为提供高性能, Ceph 把块设备条带化到整个集群。 Ceph 同时支持内核对象( KO ) 和 QEMU 管理程序直接使用 librbd ——避免了内核对象在虚拟系统上的开销。

在linux上使用iscsi挂载块设备

1. 确认iscsi-initiator-utils已安装

yum -y install scsi-target-utils

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@summer163-200 ~]# rpm -qa |grep -i iscsi-initiator-utils
iscsi-initiator-utils-iscsiuio-6.2.0.874-19.0.1.el7.x86_64
iscsi-initiator-utils-6.2.0.874-19.0.1.el7.x86_64

2. 配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root in summer163-200 in ~ via 🐍 v2.7.5 
➜ sed -n '50,90p'  /etc/iscsi/iscsid.conf | grep -Ev '^$|^\s*#'
node.session.auth.authmethod = CHAP
node.session.auth.username = xsw1
node.session.auth.password = q123456123456
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = xsw1
discovery.sendtargets.auth.password = q123456123456
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@summer163-200 ~]# sed -n '50,90p'  /etc/iscsi/iscsid.conf

# *************
# CHAP Settings
# *************

# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
node.session.auth.authmethod = CHAP

# To configure which CHAP algorithms to enable set
# node.session.auth.chap_algs to a comma seperated list.
# The algorithms should be listen with most prefered first.
# Valid values are MD5, SHA1, SHA256
# The default is MD5.
#node.session.auth.chap_algs = SHA256,SHA1,MD5

# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
node.session.auth.username = xsw1
node.session.auth.password = q123456123456

# To set a CHAP username and password for target(s)
# authentication by the initiator, uncomment the following lines:
#node.session.auth.username_in = xsw1
#node.session.auth.password_in = q123456123456

# To enable CHAP authentication for a discovery session to the target
# set discovery.sendtargets.auth.authmethod to CHAP. The default is None.
discovery.sendtargets.auth.authmethod = CHAP

# To set a discovery session CHAP username and password for the initiator
# authentication by the target(s), uncomment the following lines:
discovery.sendtargets.auth.username = xsw1
discovery.sendtargets.auth.password = q123456123456

# To set a discovery session CHAP username and password for target(s)
# authentication by the initiator, uncomment the following lines:
#discovery.sendtargets.auth.username_in = xsw1
#discovery.sendtargets.auth.password_in = q123456123456

# ********

3. 重启服务

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@summer163-200 ~]# service iscsid restart
Redirecting to /bin/systemctl restart iscsid.service
[root@summer163-200 ~]# ps -ef |grep iscsi
root      353907       2  0 Mar24 ?        00:00:00 [iscsi_eh]
root      811588       1  0 09:46 ?        00:00:00 /sbin/iscsid -f -d2
root      811603  808540  0 09:46 pts/2    00:00:00 grep --color=auto iscsi

4. 发现目标

  • 这里注意添加ACL,不配置默认是ALL
  • 什么是ACL? ACL(Access Control List)即访问控制列表。主要是针对单一用户,单一文件或目录进行rwx权限的细部设定。可以针对用户(User)、群组(Group)、默认属性掩码(umask)进行设置。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root in summer163-200 in /var/lib/iscsi 
➜ iscsiadm -m discovery -t st -p 192.168.163.201
192.168.163.201:3260,1 iqn.2021-04.com.419:192.168.163.sn.2f0ab0113d94581903dd010c
  • 在发现了target后,在/var/lib/iscsi中的nodes和send_targets目录中就有了文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root in summer163-200 in /var/lib 
➜ iscsiadm -m discovery -t st -p 192.168.163.299
iscsiadm: Cannot resolve host 192.168.163.299. getaddrinfo error: [Name or service not known]
iscsiadm: cannot resolve host name 192.168.163.299
iscsiadm: cannot resolve host name 192.168.163.299
iscsiadm: Could not perform SendTargets discovery: encountered connection failure
root in summer163-200 in /var/lib 
❯ tree iscsi/
iscsi/
├── ifaces
├── isns
├── nodes
│   └── iqn.2021-04.com.419:192.168.163.sn.2f0ab0113d94581903dd010c
│       └── 192.168.163.201,3260,1
│           └── default
├── send_targets
│   ├── 192.168.163.201,3260
│   │   ├── iqn.2021-04.com.419:192.168.163.sn.2f0ab0113d94581903dd010c,192.168.163.201,3260,1,default -> /var/lib/iscsi/nodes/iqn.2021-04.com.419:192.168.163.sn.2f0ab0113d94581903dd010c/192.168.163.201,3260,1
│   │   └── st_config
│   └── 192.168.163.299,3260
│       └── st_config
├── slp
└── static

11 directories, 3 files
  • discovery失败的在send_targets目录中也会记录,只不过是空目录。在nodes目录和正确discovery到的send_targets子目录中都有几个配置文件,都是些参数信息。而且可以看到,send_targets中的目录是nodes目录的软链接
  • 如果想重新发现已存在的target时,可以清空nodes目录中对应的项,然后再discovery

5. 登入目标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root in summer163-200 in iscsi/send_targets/192.168.163.299,3260 
➜ iscsiadm -m node iqn.2021-04.com.419:192.168.163.sn.2f0ab0113d94581903dd010c -l
Logging in to [iface: default, target: iqn.2021-04.com.419:192.168.163.sn.2f0ab0113d94581903dd010c, portal: 192.168.163.201,3260] (multiple)
Login to [iface: default, target: iqn.2021-04.com.419:192.168.163.sn.2f0ab0113d94581903dd010c, portal: 192.168.163.201,3260] successful.

6. 查看iscsi映射的磁盘和其分区情况

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@summer163-200 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
├─sda2        8:2    0    5G  0 part /usr/summer_vfs
└─sda3        8:3    0   94G  0 part 
  └─os-root 252:0    0   94G  0 lvm  /
sdb           8:16   0   30G  0 disk 
└─sdb1        8:17   0   30G  0 part /var/lib/ceph/osd/ceph-0
sdc           8:32   0   30G  0 disk 
└─sdc1        8:33   0   30G  0 part /var/lib/ceph/osd/ceph-1
sdd           8:48   0   10G  0 disk 
├─sdd1        8:49   0   16M  0 part 
└─sdd2        8:50   0   10G  0 part 
sr0          11:0    1 1024M  0 rom  

7. 重新分区

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@summer163-200 ~]# parted -s /dev/sdd mklabel gpt
[root@summer163-200 ~]# parted -s /dev/sdd mkpart primary 0G 100%
[root@summer163-200 ~]# parted -s /dev/sdd print
Model: IET VIRTUAL-DISK (scsi)
Disk /dev/sdd: 10.7GB
Sector size (logical/physical): 512B/4194304B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
 1      4194kB  10.7GB  10.7GB               primary

[root@summer163-200 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
├─sda2        8:2    0    5G  0 part /usr/summer_vfs
└─sda3        8:3    0   94G  0 part 
  └─os-root 252:0    0   94G  0 lvm  /
sdb           8:16   0   30G  0 disk 
└─sdb1        8:17   0   30G  0 part /var/lib/ceph/osd/ceph-0
sdc           8:32   0   30G  0 disk 
└─sdc1        8:33   0   30G  0 part /var/lib/ceph/osd/ceph-1
sdd           8:48   0   10G  0 disk 
└─sdd1        8:49   0   10G  0 part 
sr0          11:0    1 1024M  0 rom  

8. 创建文件系统并挂载块设备

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@summer163-200 ~]# mkfs.xfs /dev/sdd1
specified blocksize 4096 is less than device physical sector size 4194304
switching to logical sector size 512
meta-data=/dev/sdd1              isize=256    agcount=4, agsize=654848 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=0        finobt=0, sparse=0, rmapbt=0, reflink=0
data     =                       bsize=4096   blocks=2619392, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@summer163-200 ~]# lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda           8:0    0  100G  0 disk 
├─sda1        8:1    0    1G  0 part /boot
├─sda2        8:2    0    5G  0 part /usr/summer_vfs
└─sda3        8:3    0   94G  0 part 
  └─os-root 252:0    0   94G  0 lvm  /
sdb           8:16   0   30G  0 disk 
└─sdb1        8:17   0   30G  0 part /var/lib/ceph/osd/ceph-0
sdc           8:32   0   30G  0 disk 
└─sdc1        8:33   0   30G  0 part /var/lib/ceph/osd/ceph-1
sdd           8:48   0   10G  0 disk 
└─sdd1        8:49   0   10G  0 part 
sr0          11:0    1 1024M  0 rom  
[root@summer163-200 ~]# mkdir /iscsd-dir
[root@summer163-200 ~]# mount -t xfs /dev/sdd1 /iscsd-dir/
[root@summer163-200 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             1.7G     0  1.7G   0% /dev
tmpfs                1.7G   20K  1.7G   1% /dev/shm
tmpfs                1.7G   17M  1.7G   1% /run
tmpfs                1.7G     0  1.7G   0% /sys/fs/cgroup
/dev/mapper/os-root   93G   38G   51G  43% /
/dev/sda2            4.8G  695M  3.9G  15% /usr/summer_vfs
/dev/sda1            976M  385M  525M  43% /boot
tmpfs                342M     0  342M   0% /run/user/1000
/dev/sdb1             30G   21G  9.9G  68% /var/lib/ceph/osd/ceph-0
tmpfs                342M     0  342M   0% /run/user/0
/dev/sdc1             30G   21G  9.9G  68% /var/lib/ceph/osd/ceph-1
/dev/sdd1             10G   33M   10G   1% /iscsd-dir
[root@summer163-200 ~]#

9. 测试写文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@summer163-200 ~]# cd /iscsd-dir/
[root@summer163-200 iscsd-dir]# ll
total 0
[root@summer163-200 iscsd-dir]# mkdir xsw
[root@summer163-200 iscsd-dir]# ll
total 0
drwxr-xr-x 2 root root 6 Mar 25 10:41 xsw
[root@summer163-200 iscsd-dir]# dd if=/dev/zero of=/iscsd-dir/xsw/lalala bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB) copied, 1.1494 s, 91.2 MB/s
[root@summer163-200 iscsd-dir]# cd xsw/
[root@summer163-200 xsw]# ll
total 102400
-rw-r--r-- 1 root root 104857600 Mar 25 10:42 lalala
[root@summer163-200 xsw]# du -sh *
100M	lalala
[root@summer163-200 xsw]#

10. 断开连接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@summer163-200 ~]# umount /dev/sdd1
[root@summer163-200 ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
devtmpfs             1.7G     0  1.7G   0% /dev
tmpfs                1.7G   20K  1.7G   1% /dev/shm
tmpfs                1.7G   17M  1.7G   1% /run
tmpfs                1.7G     0  1.7G   0% /sys/fs/cgroup
/dev/mapper/os-root   93G   38G   51G  43% /
/dev/sda2            4.8G  695M  3.9G  15% /usr/summer_vfs
/dev/sda1            976M  385M  525M  43% /boot
tmpfs                342M     0  342M   0% /run/user/1000
/dev/sdb1             30G   21G  9.9G  68% /var/lib/ceph/osd/ceph-0
tmpfs                342M     0  342M   0% /run/user/0
/dev/sdc1             30G   21G  9.9G  68% /var/lib/ceph/osd/ceph-1
[root@summer163-200 ~]# iscsiadm -m node --logoutall=all
Logging out of session [sid: 1, target: iqn.2021-03.com.60:192.168.163.sn.c0a9bbaa7884c15d55e347a7, portal: 192.168.163.201,3260]
Logout of [sid: 1, target: iqn.2021-03.com.60:192.168.163.sn.c0a9bbaa7884c15d55e347a7, portal: 192.168.163.201,3260] successful.
[root@summer163-200 ~]#

11. 删除分区

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sdm      8:192  0 447.1G  0 disk 
└─sdm1   8:193  0 447.1G  0 part 
root@Kylin102:~# fdisk /dev/sdm

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


命令(输入 m 获取帮助): d
Selected partition 1
Partition 1 has been deleted.

命令(输入 m 获取帮助): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

补充

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
> 1.发现iscsi存储: iscsiadm -m discovery -t st -p ISCSI_IP:PORT
> 2.查看iscsi发现记录 iscsiadm -m node
> 3.删除iscsi发现记录 iscsiadm -m node -o delete -T LUN_NAME -p ISCSI_IP:PORT
> 4.登录iscsi存储 iscsiadm -m node -T LUN_NAME -p ISCSI_IP:PORT -l
> 5.登出iscsi存储 iscsiadm -m node -T iqn.2017-12.com.example:storage1 -p 172.25.254.212 -l
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
重构:改善饿了么交易系统的设计思路
这篇文章成型于交易系统重构一期之后,主要是反思其过程中做决策的思路,我没有使用「架构」这个词语,是因为它给人的感受充满权利和神秘感,谈论「架构」让人有一种正在进行责任重大的决策或者深度技术分析的感觉。
用户1516716
2019/09/24
4340
重构:改善饿了么交易系统的设计思路
.NET领域驱动设计—初尝(原则、工具、过程、框架)
原则对于任何一项技术实现来说都是至关重要的,在设计某一个系统功能的时候我们讲究的是设计原则:
王清培
2019/03/01
8480
.NET领域驱动设计—初尝(原则、工具、过程、框架)
重温设计模式系列(三)面向对象设计原则
面向对象基础知识,只是给了我们一个概念,如何更好的设计出良好的面向对象代码,需要有设计原则作为支持。设计原则是核心指导思想,在这些原则的基础上,经过不断的实践,抽象,提炼逐步产生了针对特定问题的设计模式。因此,学好设计模式的基础是掌握基本的设计原则。本文将介绍面向对象常用的设计原则。(某些原则,也可以用在系统级,模块级等类型的设计中应用)
架构之家
2022/07/12
3590
重温设计模式系列(三)面向对象设计原则
万字多图 | UML 入门指南
谈到面向对象技术的分析和设计,自然就离不开 UML。对于 UML 这个概念,很多程序员朋友耳熟能详,也有在用,但在工作中,一些朋友其实并不擅长使用 UML 甚至对 UML 这个东西模棱两可,也包括我自己。因此我希望可以结合自己的经验和实践,写一篇 UML 的入门文章,帮助做面向对象的程序员朋友能更好的利用它,从而顺利完成自己的编程设计工作。
蜗牛互联网
2021/02/26
8810
万字多图 | UML 入门指南
面向对象设计原则
迪米特法则来自于1987年美国东北大学一个名为“Demeter”的研究项目。 迪米特法则要求一个软件实体应当尽可能少地与其他实体发生相互作用 应用迪米特法则可降低系统的耦合度,使类与类之间保持松散的耦合关系。 迪米特法则要求在设计系统时,应当尽量减少对象之间的交互 。如果两个对象之间不必彼此直接通信,那么这两个对象就不应该发生任何直接的相互作用 。如果其中一个对象需要调用另一个对象的方法,可以通过“第三者”转发这个调用 * 通过引入一个合理的“第三者”(中间类)来降低现有对象之间的耦合度。
泰斗贤若如
2020/03/03
7190
DDD在大众点评交易系统演进中的应用
本文主要涉及境外出行、商场团购和内容商业化等三类交易业务场景。在大众点评App里,在境外城市站有美食、购物、商场、景点、门票、当地玩乐等频道入口,可以购买境外出行交易产品,在境内的逛街/商场频道可以找到商场团购优惠以及商场团购代金券。
美团技术团队
2024/05/15
2360
DDD在大众点评交易系统演进中的应用
面向对象架构设计流程
软件架构:与"设计模式"类似,基于"领域架构",应用架构设计原则和方法,精雕细琢,逐步迭代,得出最终的软件架构。
别明天就今天吧
2020/09/07
6230
架构设计方法论
业务分析阶段是由业务分析师 基于自身的业务知识和类似产品的参考,再结合客户、领域专家的咨询和指导输出业务分析阶段的成果,主要包括 领域模型 和 业务模型
JAVA日知录
2021/04/07
1.6K0
架构设计方法论
面向对象的代码风格(下)
面向对象代码的结构 在结构化编程中,代码的结构以分解流程,实现处理方案为核心,代码的分解原色是以实现步骤为主。理解这种结构的代码,我们需要先理解问题的解决方案,如果需求变化,一般都需要修改代码。面向对象思想,针对结构化编程的这些缺点,提出了著名的“开-闭”原则。意思是代码应该对添加开放,对修改关闭。能做到这个原则,是需要代码结构上利用面向对象的特性才能做到的。 面向对象代码结构的重点是定义“类”,与结构化编程倾向分解问题解决步骤不同,面向对象编程更重视描述问题本身。由于代码按“类”划分,所以一般不会完全解决
韩伟
2018/03/05
7800
面向对象的代码风格(下)
面向对象设计原则
某软件公司开发人员针对CRM(Customer Relationship Management,客户关系管理)系统中的客户信息图表统计模块提出了如图所示的初始设计方案。
千羽
2021/12/29
4410
面向对象设计原则
[C++设计模式] 深入理解面向对象设计原则
在软件开发中,变化是永恒的主题。当需求发生变化时,设计的灵活性和可扩展性便成为系统能否持续演进的关键。设计模式的核心就在于利用面向对象设计原则,帮助开发者构建既能应对变化又具有高度复用性的系统。
DevKevin
2024/12/04
1740
万字长文,结合电商支付业务一文搞懂DDD
作者范钢,曾任航天信息首席架构师,《大话重构》一书的作者。本文结合电商支付场景详细描述了领域驱动模型的实际应用。
用户7927337
2020/11/30
1.3K0
万字长文,结合电商支付业务一文搞懂DDD
面试官亲述:如何利用设计模式改善业务代码
在业务部门的开发中,大多数的我们在完成的业务的各种需求和提供解决方案,很多场景下的我们通过 CRUD 就能解决问题,但是这样的工作对技术人的提升并不多,如何让自己从业务中解脱出来找到写代码的乐趣呢,我做过一些尝试,使用设计模式改善自己的业务代码就是其中的一种。让代码变得更加简洁和提升健壮性,从代码中寻找一些欢乐。
程序员白楠楠
2021/01/07
4380
领域驱动设计概览
领域驱动设计(Domain Driven Design,DDD)是由Eric Evans最早提出的综合软件系统分析和设计的面向对象建模方法,如今已经发展为一种针对大型复杂系统的领域建模与分析方法。它完全改变了传统软件开发工程师针对数据库进行的建模方法,从而将要解决的业务概念和业务规则转换为软件系统中的类型以及类型的属性与行为,通过合理运用面向对象的封装、继承、多态等设计要素,降低或隐藏整个系统的业务复杂性,并使得系统具有更好的扩展性,应对纷繁多变的现实业务问题。
张逸
2018/10/24
8610
领域驱动设计概览
《解构领域驱动设计》第二章
应对复杂度的挑战,或许是构建软件的过程中唯一亘古不变的主题。为了更好地应对软件复杂度,许多顶尖的软件设计人员与开发人员纷纷结合实践提出自己的真知灼见,既包括编程思想、设计原则、模式语言、过程方法和管理理论,又包括对编程利器自身的打磨。毫无疑问,通过这些真知灼见,软件领域的先行者已经改变或正在改变我们构建软件的方法、过程和目标,我们欣喜地看到了软件的构建正在向着好的方向改变。然而,整个客观世界的所有现象都存在诸如黑与白、阴与阳、亮与暗的相对性,任何技术的发展都不是单向的。随着技术日新月异向前发展,软件系统的复杂度也日益增长。中国有一句古谚:“道高一尺,魔高一丈。”又有谚语:“魔高一尺,道高一丈。”究竟是道高还是魔高,就看你是站在“道”的一方,还是“魔”的一方。
张逸
2023/03/23
7230
《解构领域驱动设计》第二章
60条面向对象设计原则
60条面向对象设计原则 你不必严格遵守这些原则,违背它们也不会被处以宗教刑罚。但你应当把这些原则看成警铃,若违背了其中的一条,那么警铃就会响起。   —–Arthur J.Riel   (1)所有数据都应该隐藏在所在的类的内部。   (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者。   (3)尽量减少类的协议中的消息。   (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深拷贝和浅拷贝)、相等性判断、正确输出内容、从ASCII描述解析等等]。   (5)不要把实现细
用户1289394
2018/02/26
8430
聊聊领域驱动设计
DDD全写 domain driver design ,也称为领域驱动设计。大型复杂业务系统架构一般都会用到,在提高系统扩展性有很大帮助。
微观技术
2020/08/20
7810
【愚公系列】2023年11月 面向对象设计原则(六)-合成复用原则(Composite Reuse Principle or CRP)
面向对象设计原则是一些通用的软件设计原则,用于指导软件设计人员开发高质量、可扩展、可维护的软件系统。这些原则的作用如下:
愚公搬代码
2023/11/27
2650
领域驱动设计-上
随着软件系统越来越庞大,需求越来越模糊,代码越来越混乱,测试越来越困难,技术演进基本不可能,而其中大型复杂的软件项目更容易走向系统老化的过程,形成需求难、开发难、测试难、创新难,单体架构局部业务膨胀可以拆成微服务,那么微服务局部业务膨胀又应该怎么做?DDD之所以火,即能解决微服务解决不了的问题。DDD是为了解决快速变化、复杂系统的设计问题。
用户7353950
2022/06/23
4880
领域驱动设计-上
我是怎样教媳妇面向对象编程的
简介 我老婆 Farhana 想要继续软件开发生涯(之前因为我们的第一个孩子出生,她不得不放弃)。我已经有了一些软件设计和开发的经验,所以这几天我就在试着帮助她学习OOD。 由于我早年在软件开发的经验,我总是发现无论一个技术问题看上去多么难搞,只要从现实生活的角度去解释或用对话的方式去讨论总能让它变得更简单。关于OOD,我们已经有了许多成果丰硕的讨论,我觉得有人可能发现这是一个学习OOD有趣的方式,所以我想我应该分享出来。 下面是我们的谈话步骤:话题:介绍面向对象设计 丈夫:亲爱的,让我们开始学习面向对象设
Java高级架构
2018/04/19
8370
我是怎样教媳妇面向对象编程的
推荐阅读
相关推荐
重构:改善饿了么交易系统的设计思路
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 在linux上使用iscsi挂载块设备
    • 1. 确认iscsi-initiator-utils已安装
    • 2. 配置文件
    • 3. 重启服务
    • 4. 发现目标
    • 5. 登入目标
    • 6. 查看iscsi映射的磁盘和其分区情况
    • 7. 重新分区
    • 8. 创建文件系统并挂载块设备
    • 9. 测试写文件
    • 10. 断开连接
    • 11. 删除分区
    • 补充
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档