单机搭建Android开发条件(四)

分布式存储是相对于单机存储而言,之所以要分布自然是以互联网时代信息数量大爆炸,单机已经难以满足大型应用之数量存储需求。

单机搭建安卓开发条件,前三篇重要是备战,这同首将着重介绍JDK、REPO、GIT及编译工具的装置,下载类代码并编译。特别说明,以下操作基于64员12.04
Server版Ubuntu。若使其它版本系统,请参见Google官方操作步骤。访问不了底同室,请找大师(蓝灯),他能够帮助你平臂的能力。

储存系统的关注点

关于存储系统,一般我们关注下几乎只地方:

  1. 数据分布与负载均衡
  2. 数据存储的可靠性和一致性
  3. 数量访问性能
  4. 网容错能力
  5. 网扩展能力

以单机存储系统受来平等栽独立磁盘冗余阵列(RAID,redundant array of
independent disks)技术,
是拿同之数码存储在多单硬盘不同地方的主意。通过将多少在多独硬盘上,输入输出操作会以抵消的章程交叠,改良性能。
本条技能骨干解决了咱们地方提到的前面三碰,数据可以经过磁盘阵列控制程序都匀分布于差不多只硬盘上,
盖促成负载均衡,并通过冗余来保持可靠性。类似单机挂载多磁盘,数据以磁盘阵列上的冗余副本要保持一致也易。
存储系统的访性能基本受制于磁盘的性质,通过分散到差不多磁盘确实达到了晋级性的效果。

审的题材困难在后少碰:
磁盘阵列解决了单纯性磁盘的脆弱性,但连无能够提升存储子系统总体的可用性,或者说容错能力。
同理扩展能力同样受制于磁盘阵列的物理扩展槽的限量。

1)安装OpenJDK
7

分布式存储的概念及分类

为此分布式存储应运而生,作为存储系统它同需要对上述问题。
先行来拘禁下她的定义:
分布式存储系统是大度习以为常 PC
服务器通过网互联,对外作一个完提供仓储服务。

自从者的定义看,更多时候咱们将分布式存储作为同样栽服务面向各种不同的多寡存储需求。

由数量存储模型上,我们得进一步分类分布式存储服务为:

  1. 文件模型: 对承诺分布式文件系统,如:GFS、HDFS
  2. 涉嫌模型: 对诺分布式数据库系统,如:Google Spanner、Taobao
    OceanBase
  3. 键值模型: 很多 NoSQL 系统采用,如:Redis

   sudo
apt-get install openjdk-7-jdk –force-yes –y

分布式存储的得和失

冲单机存储系统对有限个难点,分布式存储系统经过集群方式扩大至几百居然几千令集群规模来解决系统扩展能力,
经过软件层面对单机服务器的硬件容错能力大大提升了总体集群的容错能力。

在取得这些便宜时,自然吧保有牺牲,所谓有得自然起失去。
说到囤不得不提单机数据库存储的事体特性:A(原子性)C(一致性)I(隔离性)D(持久性),
比方恢宏及分布式存储后,受限于分布式
C(一致性)A(可用性)P(分区容忍性)理论,几乎无可能满足整得事务特性。
各种分布式存储服务实现还针对单机存储的作业特性作了权取舍,满足特定的劳动状况需求。

除此以外分布式存储系统是因网络互联的,所以除了主导得磁盘访问性能开销,还差不多矣网络性开销。
习以为常一般机械硬盘得平均寻道时间吧 10ms,而机房外网得网络访问开销一般小于
0.5 ms,相对性能损失比小。
假设本来由磁阵控制次负担得多少以磁盘中的遍布、负载均衡策略和一致性保障,
当分布式存储着都亟待软件以合机器集群层面去考虑,复杂度大大提高。

 
安装OpenJDK8
       
sudo add-apt-repository ppa:openjdk-r/ppa
       
sudo apt-get update
       
sudo apt-get install openjdk-8-jdk –force-yes -y

总结

近日打算对后端分布式架构设计领域知识做一个梳,形成一个到之学识系统,本文算一个从头吧。
上面对分布式存储服务开展了一体化概括,了解了分布式存储服务的分类及其架构设计的关注点。
连续将越是进行,深入到具体品种的分布式存储服务架构设计要点和贯彻细节。

查看java的版本

参考

[1] 杨传辉.
广阔分布式存储系统.
机械工业出版社(2013-09), pp. 7-52


下面是我好开之一个微信公众号
[瞬息之间],除了写技术的文章、还有产品之、行业与人生之思量,希望能同更多活动以马上条路上同行者交流,有趣味而关注一下,谢谢。
图片 1

版权声明:本文为博主原创文章,未经博主允许不得转载。

 

  java
–version

  java
version “1.7.0_95”

  OpenJDK
Runtime Environment (IcedTea 2.6.4) (7u95-2.6.4-0ubuntu0.12.04.1)

  OpenJDK
64-Bit Server VM (build 24.95-b01, mixed mode)

安装环境变量

  vim
~/.profile

当最后添加如下配置,保存并退出

  export
JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64

  export
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH

  export
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

极端输入如下命令使配置生效

  source
~/.profile

2)安装google推荐的编译工具

  sudo
apt-get install gnupg flex bison gperf build-essential –force-yes -y

  sudo
apt-get install zip curl libc6-dev libncurses5-dev:i386
x11proto-core-dev –force-yes -y

  sudo
apt-get install libx11-dev:i386 libreadline6-dev:i386 –force-yes -y

  sudo
apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos
–force-yes -y

  sudo
apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386
–force-yes -y

  sudo
apt-get install libgl1-mesa-dri:i386 dpkg-dev –force-yes –y

3)安装repo

下载repo
V1.22境内定制版,已处理原版在境内用时出现如下错误提示:

  fatal:
Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle

  fatal:
error [Errno 101] Network is unreachable

拿repo拷贝到/bin目录下,并修改该性能

  sudo
cp /home/repo /bin/

  sudo
chmod a+x /bin/repo

4)安装git

  sudo
apt-get install git –force-yes –y

配置用户邮箱与用户称

  git config –global user.email
“hjb@mail.com”

  git
config –global user.name “hjb”

布好后只是经过git
config –list查看配置信息,或经cat
~/.gitconfig查看git配置文件的详细信息。

5)创建密钥,并上加到劳动器端

  ssh-keygen
-t rsa -C hjb@bonovo.com

拷贝id_rsa.pub并重命名,然后复制到服务器

  cp
/home/hjb/.ssh/id_rsa.pub /home/hjb/id_rsa.pub.hjb113

以git服务器端登录bnv用户,并实行如下命令,

  cat
/home/hjbang/id_rsa.pub.hjb113 >>
/home/bnv/.ssh/authorized_keys

6)本地创建project目录mt8735,准备下载代码

  cd
~

  mkdir
mt8735

  cd
mt8735

7)同步代码

  repo
init -u
bnv@192.168.1.12:/home/git/MTK/lp5.1-mt8735m-mirror/bonovo/platform/manifests.git
-b default

  repo
sync

  repo
forall -c git checkout lp5.1-mt6735m

  repo
forall -c git checkout mt8735-avn401

  repo
forall -c git pull

8)安装ccache,并配置ccache

  sudo
apt-get install -y ccache

配置.bashrc

  sudo
vim ~/.bashrc

末添加

  export
USE_CCACHE=1

若配置及时生效

  source
~/.bashrc

查看设置状态:

  echo
$USE_CCACHE

9)编译project

  cd
~/mt8735

  prebuilts/misc/linux-x86/ccache/ccache
-M 50G

  .
build/envsetup.sh

  launch
25

  make
update-api

  make
update-api,大概需要花18分钟,详细信息如下,

图片 2图片 3

  Docs droiddoc: out/target/common/docs/doc-comment-check

  DroidDoc took 513 sec. to write docs to out/target/common/docs/doc-comment-check

  Copying current.txt

  Copying removed.txt

  Docs droiddoc: out/target/common/docs/system-api-stubs

  DroidDoc took 13 sec. to write docs to out/target/common/docs/system-api-stubs

  Copying system-current.txt

  Copying system-removed.txt

 #### make completed successfully (17:54 (mm:ss)) ####

View
Code

编译Android5.1系统

  make
–j24

编译过程很久,可以由此如下命令查看cahe使用情况,

  watch -n1 -d
prebuilts/misc/linux-x86/ccache/ccache -s

  cache directory /home/hjb/.ccache

  cache hit (direct) 0

  cache hit (preprocessed) 0

  cache miss 43927

  called for link 1209

  preprocessor error 732

  unsupported source language 968

  unsupported compiler option 2

  files in cache 138583

  cache size 18.0 Gbytes

  max cache size 50.0 Gbytes

得看到cache大概有18GB,故使ccache,第一涂鸦编译的辰会见比并非cache更丰富,但自此编译速度将会发出深十分提升。

经过4单半时,第一差编译终于成功了,详细信息如下,

图片 4图片 5

Creating filesystem with parameters:

Size: 1610612736

Block size: 4096

Blocks per group: 32768

Inodes per group: 8192

Inode size: 256

Journal blocks: 6144

Label:

Blocks: 393216

Block groups: 12

Reserved block group size: 95

Created filesystem with 2436/98304 inodes and 221139/393216 blocks

Install system fs image: out/target/product/mt8735_tb_l1/system.img

out/target/product/mt8735_tb_l1/system.img+out/target/product/mt8735_tb_l1/obj/PACKAGING/recovery_patch_intermediates/recovery-from-boot.p maxsize=1644331392 blocksize=4224 total=881392372 reserve=16612992



#### make completed successfully (04:25:03 (hh:mm:ss)) ####

View Code

修改内核模块代码,重新编译系统镜像大概用13分钟,详细信息如下,

图片 6图片 7

Creating filesystem with parameters:

Size: 1610612736

Block size: 4096

Blocks per group: 32768

Inodes per group: 8192

Inode size: 256

Journal blocks: 6144

Label:

Blocks: 393216

Block groups: 12

Reserved block group size: 95

Created filesystem with 2436/98304 inodes and 221139/393216 blocks

Install system fs image: out/target/product/mt8735_tb_l1/system.img

out/target/product/mt8735_tb_l1/system.img+out/target/product/mt8735_tb_l1/obj/PACKAGING/recovery_patch_intermediates/recovery-from-boot.p maxsize=1644331392 blocksize=4224 total=881392372 reserve=16612992



#### make completed successfully (13:04 (mm:ss)) ####

View Code

虽当SSD上编译,这个时会缩水至5分钟左右,但要么比较丰富。所以当调试内核驱动模块时,最好使用动态加载模块的不二法门,以增进工作效率。

由来,Android系统编译的条件中心搭建好,后一样首用介绍如何搭建Android应用开发的环境。

发表评论

电子邮件地址不会被公开。 必填项已用*标注