State machine replication

In computer science, state machine replication (SMR) or state machine approach is a general method for implementing a fault-tolerant service by replicating servers and coordinating client interactions with server replicas. The approach also provides a framework for understanding and designing replication management protocols.[1]

Problem definition

Distributed service

In terms of clients and services, each service comprises one or more servers and exports operations that clients invoke by making requests. Although using a single, centralized server is the simplest way to implement a service, the resulting service can only be as fault tolerant as the processor executing that server. If this level of fault tolerance is unacceptable, then multiple servers that fail independently can be used. Usually, replicas of a single server are executed on separate processors of a distributed system, and protocols are used to coordinate client interactions with these replicas.

State machine

For the subsequent discussion a State Machine will be defined as the following tuple of values [2] (See also Mealy machine and Moore Machine):

  • A set of States
  • A set of Inputs
  • A set of Outputs
  • A transition function (Input × State → State)
  • An output function (Input × State → Output)
  • A distinguished State called Start.

A State Machine begins at the State labeled Start. Each Input received is passed through the transition and output function to produce a new State and an Output. The State is held stable until a new Input is received, while the Output is communicated to the appropriate receiver.

This discussion requires a State Machine to be deterministic: multiple copies of the same State Machine begin in the Start state, and receiving the same Inputs in the same order will arrive at the same State having generated the same Outputs.

Typically, systems based on State Machine Replication voluntarily restrict their implementations to use finite-state machines to simplify error recovery.

Fault Tolerance

Determinism is an ideal characteristic for providing fault-tolerance. Intuitively, if multiple copies of a system exist, a fault in one would be noticeable as a difference in the State or Output from the others.

A little deduction shows the minimum number of copies needed for fault-tolerance is three; one which has a fault, and two others to whom we compare State and Output. Two copies are not enough as there is no way to tell which copy is the faulty one.

Further deduction shows a three-copy system can support at most one failure (after which it must repair or replace the faulty copy). If more than one of the copies were to fail, all three States and Outputs might differ, and there would be no way to choose which is the correct one.

In general, a system which supports F failures must have 2F+1 copies (also called replicas).[3] The extra copies are used as evidence to decide which of the copies are correct and which are faulty. Special cases can improve these bounds.[4]

All of this deduction pre-supposes that replicas are experiencing only random independent faults such as memory errors or hard-drive crash. Failures caused by replicas which attempt to lie, deceive, or collude can also be handled by the State Machine Approach, with isolated changes.

Failed replicas are not required to stop; they may continue operating, including generating spurious or incorrect Outputs.

Special Case: Fail-Stop

Theoretically, if a failed replica is guaranteed to stop without generating outputs, only F+1 replicas are required, and clients may accept the first output generated by the system. No existing systems achieve this limit, but it is often used when analyzing systems built on top of a fault-tolerant layer (Since the fault-tolerant layer provides fail-stop semantics to all layers above it).

Special Case: Byzantine Failure

Faults where a replica sends different values in different directions (for instance, the correct Output to some of its fellow replicas and incorrect Outputs to others) are called Byzantine Failures.[5] Byzantine failures may be random, spurious faults, or malicious, intelligent attacks. 2F+1 replicas, with non-cryptographic hashes suffices to survive all non-malicious Byzantine failures (with high probability). Malicious attacks require cryptographic primitives to achieve 2F+1 (using message signatures), or non-cryptographic techniques can be applied but the number of replicas must be increased to 3F+1.[5]

The State Machine Approach

The preceding intuitive discussion implies simple technique for implementing a fault-tolerant service in terms of a State Machine:

  1. Place copies of the State Machine on multiple, independent servers.
  2. Receive client requests, interpreted as Inputs to the State Machine.
  3. Choose an ordering for the Inputs.
  4. Execute Inputs in the chosen order on each server.
  5. Respond to clients with the Output from the State Machine.
  6. Monitor replicas for differences in State or Output.

The remainder of this article develops the details of this technique.

The appendix contains discussion on typical extensions used in real-world systems such as Logging, Checkpoints, Reconfiguration, and State Transfer.

Ordering Inputs

The critical step in building a distributed system of State Machines is choosing an order for the Inputs to be processed. Since all non-faulty replicas will arrive at the same State and Output if given the same Inputs, it is imperative that the Inputs are submitted in an equivalent order at each replica. Many solutions have been proposed in the literature.[2][6][7][8][9]

A Visible Channel is a communication path between two entities actively participating in the system (such as clients and servers). Example: client to server, server to server

A Hidden Channel is a communication path which is not revealed to the system. Example: client to client channels are usually hidden; such as users communicating over a telephone, or a process writing files to disk which are read by another process.

When all communication paths are visible channels and no hidden channels exist, a partial global order (Causal Order) may be inferred from the pattern of communications.[8][10] Causal Order may be derived independently by each server. Inputs to the State Machine may be executed in Causal Order, guaranteeing consistent State and Output for all non-faulty replicas.

In open systems, hidden channels are common and a weaker form of ordering must be used. An order of Inputs may be defined using a voting protocol whose results depend only on the visible channels.

The problem of voting for a single value by a group of independent entities is called Consensus. By extension, a series of values may be chosen by a series of consensus instances. This problem becomes difficult when the participants or their communication medium may experience failures.[3]

Inputs may be ordered by their position in the series of consensus instances (Consensus Order).[7] Consensus Order may be derived independently by each server. Inputs to the State Machine may be executed in Consensus Order, guaranteeing consistent State and Output for all non-faulty replicas.

Optimizing Causal & Consensus Ordering
In some cases additional information is available (such as real-time clocks). In these cases, it is possible to achieve more efficient causal or consensus ordering for the Inputs, with a reduced number of messages, fewer message rounds, or smaller message sizes. See references for details [1][4][6][11]
Further optimizations are available when the semantics of State Machine operations are accounted for (such as Read vs Write operations). See references Generalized Paxos.[2][12]

Sending Outputs

Client requests are interpreted as Inputs to the State Machine, and processed into Outputs in the appropriate order. Each replica will generate an Output independently. Non-faulty replicas will always produce the same Output. Before the client response can be sent, faulty Outputs must be filtered out. Typically, a majority of the Replicas will return the same Output, and this Output is sent as the response to the client.

System Failure

If there is no majority of replicas with the same Output, or if less than a majority of replicas returns an Output, a system failure has occurred. The client response must be the unique Output: FAIL.

Auditing and Failure Detection

The permanent, unplanned compromise of a replica is called a Failure. Proof of failure is difficult to obtain, as the replica may simply be slow to respond,[13] or even lie about its status.[5]

Non-faulty replicas will always contain the same State and produce the same Outputs. This invariant enables failure detection by comparing States and Outputs of all replicas. Typically, a replica with State or Output which differs from the majority of replicas is declared faulty.

A common implementation is to pass checksums of the current replica State and recent Outputs among servers. An Audit process at each server restarts the local replica if a deviation is detected.[14] Cryptographic security is not required for checksums.

It is possible that the local server is compromised, or that the Audit process is faulty, and the replica continues to operate incorrectly. This case is handled safely by the Output filter described previously (see Sending Outputs).

Appendix: extensions

Input log

In a system with no failures, the Inputs may be discarded after being processed by the State Machine. Realistic deployments must compensate for transient non-failure behaviors of the system such as message loss, network partitions, and slow processors.[14]

One technique is to store the series of Inputs in a log. During times of transient behavior, replicas may request copies of a log entry from another replica in order to fill in missing Inputs.[7]

In general the log is not required to be persistent (it may be held in memory). A persistent log may compensate for extended transient periods, or support additional system features such as Checkpoints, and Reconfiguration.

Checkpoints

If left unchecked a log will grow until it exhausts all available storage resources. For continued operation, it is necessary to forget log entries. In general a log entry may be forgotten when its contents are no longer relevant (for instance if all replicas have processed an Input, the knowledge of the Input is no longer needed).

A common technique to control log size is store a duplicate State (called a Checkpoint), then discard any log entries which contributed to the checkpoint. This saves space when the duplicated State is smaller than the size of the log.

Checkpoints may be added to any State Machine by supporting an additional Input called CHECKPOINT. Each replica maintains a checkpoint in addition to the current State value. When the log grows large, a replica submits the CHECKPOINT command just like a client request. The system will ensure non-faulty replicas process this command in the same order, after which all log entries before the checkpoint may be discarded.

In a system with checkpoints, requests for log entries occurring before the checkpoint are ignored. Replicas which cannot locate copies of a needed log entry are faulty and must re-join the system (see Reconfiguration).

Reconfiguration

Reconfiguration allows replicas to be added and removed from a system while client requests continue to be processed. Planned maintenance and replica failure are common examples of reconfiguration. Reconfiguration involves Quitting and Joining.

Quitting

When a server detects its State or Output is faulty (see Auditing and Failure Detection), it may selectively exit the system. Likewise, an administrator may manually execute a command to remove a replica for maintenance.

A new Input is added to the State Machine called QUIT.[2][6] A replica submits this command to the system just like a client request. All non-faulty replicas remove the quitting replica from the system upon processing this Input. During this time, the replica may ignore all protocol messages. If a majority of non-faulty replicas remain, the quit is successful. If not, there is a System Failure.

Joining

After quitting, a failed server may selectively restart or re-join the system. Likewise, an administrator may add a new replica to the group for additional capacity.

A new Input is added to the State Machine called JOIN. A replica submits this command to the system just like a client request. All non-faulty replicas add the joining node to the system upon processing this Input. A new replica must be up-to-date on the system's State before joining (see State Transfer).

State Transfer

When a new replica is made available or an old replica is restarted, it must be brought up to the current State before processing Inputs (see Joining). Logically, this requires applying every Input from the dawn of the system in the appropriate order.

Typical deployments short-circuit the logical flow by performing a State Transfer of the most recent Checkpoint (see Checkpoints). This involves directly copying the State of one replica to another using an out-of-band protocol.

A checkpoint may be large, requiring an extended transfer period. During this time, new Inputs may be added to the log. If this occurs, the new replica must also receive the new Inputs and apply them after the checkpoint is received. Typical deployments add the new replica as an observer to the ordering protocol before beginning the state transfer, allowing the new replica to collect Inputs during this period.

Optimizing State Transfer

Common deployments reduce state transfer times by sending only State components which differ. This requires knowledge of the State Machine internals. Since state transfer is usually an out-of-band protocol, this assumption is not difficult to achieve.

Compression is another feature commonly added to state transfer protocols, reducing the size of the total transfer.

Leader Election (for Paxos)

Paxos[7] is a protocol for solving consensus, and may be used as the protocol for implementing Consensus Order.

Paxos requires a single leader to ensure liveness.[7] That is, one of the replicas must remain leader long enough to achieve consensus on the next operation of the state machine. System behavior is unaffected if the leader changes after every instance, or if the leader changes multiple times per instance. The only requirement is that one replica remains leader long enough to move the system forward.

Conflict resolution

In general, a leader is necessary only when there is disagreement about which operation to perform,[11] and if those operations conflict in some way (for instance, if they do not commute).[12]

When conflicting operations are proposed, the leader acts as the single authority to set the record straight, defining an order for the operations, allowing the system to make progress.

With Paxos, multiple replicas may believe they are leaders at the same time. This property makes Leader Election for Paxos very simple, and any algorithm which guarantees an 'eventual leader' will work.

Historical background

A number of researchers published articles on the replicated state machine approach in the early 1980s. Anita Borg described an implementation of a fault tolerant operating system based on replicated state machines in a 1983 paper "A message system supporting fault tolerance". Leslie Lamport also proposed the state machine approach, in his 1984 paper on "Using Time Instead of Timeout In Distributed Systems". Fred Schneider later elaborated the approach in his paper "Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial".

Ken Birman developed the virtual synchrony model in a series of papers published between 1985 and 1987. The primary reference to this work is "Exploiting Virtual Synchrony in Distributed Systems", which describes the Isis Toolkit, a system that was used to build the New York and Swiss Stock Exchanges, French Air Traffic Control System, US Navy AEGIS Warship, and other applications.

Recent work by Miguel Castro and Barbara Liskov used the state machine approach in what they call a "Practical Byzantine fault tolerance" architecture that replicates especially sensitive services using a version of Lamport's original state machine approach, but with optimizations that substantially improve performance.

Most recently, there has also been the creation of the BFT-SMaRt library,[15] a high-performance Byzantine fault-tolerant state machine replication library developed in Java. This library implements a protocol very similar to PBFT's, plus complementary protocols which offer state transfer and on-the-fly reconfiguration of hosts (i.e., JOIN and LEAVE operations). BFT-SMaRt is the most recent effort to implement state machine replication, still being actively maintained.

Raft, a consensus based algorithm, was developed in 2013.

Motivated by PBFT, Tendermint BFT[16] was introduced for partial asynchronous networks and it is mainly used for Proof of Stake blockchains.

References

  1. ^ a b Schneider, Fred (1990). "Implementing Fault-Tolerant Services Using the State Machine Approach: A Tutorial" (PS). ACM Computing Surveys. 22 (4): 299–319. CiteSeerX 10.1.1.69.1536. doi:10.1145/98163.98167. S2CID 678818.
  2. ^ a b c d Lamport, Leslie (1978). "The Implementation of Reliable Distributed Multiprocess Systems". Computer Networks. 2 (2): 95–114. doi:10.1016/0376-5075(78)90045-4. Retrieved 2008-03-13.
  3. ^ a b Lamport, Leslie (2004). "Lower Bounds for Asynchronous Consensus".
  4. ^ a b Lamport, Leslie; Mike Massa (2004). "Cheap Paxos". International Conference on Dependable Systems and Networks, 2004. pp. 307–314. doi:10.1109/DSN.2004.1311900. ISBN 978-0-7695-2052-0. S2CID 1325830.
  5. ^ a b c Lamport, Leslie; Robert Shostak; Marshall Pease (July 1982). "The Byzantine Generals Problem". ACM Transactions on Programming Languages and Systems. 4 (3): 382–401. CiteSeerX 10.1.1.64.2312. doi:10.1145/357172.357176. S2CID 55899582. Retrieved 2007-02-02.
  6. ^ a b c Lamport, Leslie (1984). "Using Time Instead of Timeout for Fault-Tolerant Distributed Systems". ACM Transactions on Programming Languages and Systems. 6 (2): 254–280. CiteSeerX 10.1.1.71.1078. doi:10.1145/2993.2994. S2CID 402171. Retrieved 2008-03-13.
  7. ^ a b c d e Lamport, Leslie (May 1998). "The Part-Time Parliament". ACM Transactions on Computer Systems. 16 (2): 133–169. doi:10.1145/279227.279229. S2CID 421028. Retrieved 2007-02-02.
  8. ^ a b Birman, Kenneth; Thomas Joseph (1987). "Exploiting virtual synchrony in distributed systems". ACM Sigops Operating Systems Review. 21 (5): 123–138. doi:10.1145/37499.37515. hdl:1813/6651.
  9. ^ Lampson, Butler (1996). "How to Build a Highly Available System Using Consensus". Retrieved 2008-03-13.
  10. ^ Lamport, Leslie (July 1978). "Time, Clocks and the Ordering of Events in a Distributed System". Communications of the ACM. 21 (7): 558–565. doi:10.1145/359545.359563. S2CID 215822405. Retrieved 2007-02-02.
  11. ^ a b Lamport, Leslie (2005). "Fast Paxos".
  12. ^ a b Lamport, Leslie (2005). "Generalized Consensus and Paxos". {{cite journal}}: Cite journal requires |journal= (help)
  13. ^ Fischer, Michael J.; Nancy A. Lynch; Michael S. Paterson (1985). "Impossibility of Distributed Consensus with One Faulty Process". Journal of the Association for Computing Machinery. 32 (2): 347–382. doi:10.1145/3149.214121. S2CID 207660233. Retrieved 2008-03-13.
  14. ^ a b Chandra, Tushar; Robert Griesemer; Joshua Redstone (2007). "Paxos made live". Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing (PDF). pp. 398–407. doi:10.1145/1281100.1281103. ISBN 9781595936165. S2CID 207164635.
  15. ^ BFT-SMaRt. Google Code repository for the BFT-SMaRt replication library.
  16. ^ Buchman, E.; Kwon, J.; Milosevic, Z. (2018). "The latest gossip on BFT consensus". arXiv:1807.04938 [cs.DC].

Read other articles:

Artikel ini mungkin terdampak dengan peristiwa terkini: Invasi Rusia ke Ukraina 2022. Informasi di halaman ini bisa berubah setiap saat. Lukisan Kerch tahun 1839 oleh Ivan Aivazovsky. Kerch (bahasa Rusia: Керчь) adalah sebuah kota yang terletak di Krimea tepatnya di Semenanjung Kerch yang secara de facto masuk wilayah Ukraina dan secara de jure masuk wilayah Rusia. Pada tahun 2001, kota ini memiliki populasi sebesar 157.000 jiwa. Pranala luar Site of the city Diarsipkan 2004-04-11 di...

 

 

Pertempuran MakauBagian dari Perang Belanda-PortugalKapal Belanda menembakkan meriam di perairan Makau, digambar tahun 1665Tanggal22–24 Juni 1622LokasiMakau, TiongkokHasil Kemenangan besar PortugalPihak terlibat  Republik Belanda Imperium Portugal Makau PortugalTokoh dan pemimpin Cornelis Reijersen,Hans Ruffijn † Lopo Sarmento de CarvalhoKekuatan 1.300 (pasukan pendarat 800)13 kapal ~150 kapal PortugisBudak-budak kulit hitam (jumlah tidak diketahui)Korban 300+ tewas (136 orang B...

 

 

Hans Meyer graf van Hans Meyer Hans Meyer (Hildburghausen, 22 maart 1858 – Leipzig, 5 juli 1929) was een Duitse geograaf, ontdekkingsreiziger en uitgever. Meyer was een zoon van uitgever Herrmann Julius Meyer (1826-1909) en maakte van 1884-1914 deel uit van de directie van de uitgeverij van zijn vader, Bibliographisches Institut. Van 1915 tot 1928 was hij hoogleraar koloniale geografie in Leipzig. Na een wereldreis (1881/82) ondernam Meyer verscheidene expedities naar Zuid- en Oost-Afrika (...

Ця стаття містить перелік посилань, але походження тверджень у ній залишається незрозумілим через практично повну відсутність внутрішньотекстових джерел-виносок. Будь ласка, допоможіть поліпшити цю статтю, перетворивши джерела з переліку посилань на джерела-виноски у...

 

 

この項目では、日本の国土で使用されている言語について説明しています。言語名としての日本語については「日本語」をご覧ください。 この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: 日本の言語 – ニュース · 書籍 · スカ

 

 

Concept in conflict studies Conflict analysis or conflict assessment, a concept within peace and conflict studies, is an initial stage of conflict resolution in which parties seek to gain a deeper understanding of the dynamics in their relationship.[1] When there is a disagreement in the methods used to achieve an end result, and there is a disparity between a unified vision and direction, opposing sides are subject to conflict. If these sides consistently misinterpret one another, a ...

Ice hockey team in Connellsville, PennsylvaniaKeystone Ice MinersCityConnellsville, PennsylvaniaLeagueNAHLDivisionNorthFounded2010Home arenaThe Ice MineColorsBlue, Orange, and BlackOwner(s)Hat Trick Hockey, LLCGeneral managerMichael GershonHead coachMichael GershonFranchise history2010–2014Port Huron Fighting Falcons2014–2015Keystone Ice Miners The Keystone Ice Miners were a Junior A Tier II ice hockey team based at The Ice Mine arena in Connellsville, Pennsylvania. The team moved to...

 

 

Siegel. Simon von Joinville († Mai 1233) war Herr von Joinville und Seneschall von Champagne. Er war ein jüngerer Sohn des Herren Gottfried IV. von Joinville und dessen Ehefrau Hélius von Dampierre. Inhaltsverzeichnis 1 Biographie 2 Ehen und Nachkommen 3 Literatur 4 Einzelnachweis Biographie Wappen der Joinvilles Simon folgte um 1204 seinem im heiligen Land gefallenen Bruder Gottfried V. als Herr von Joinville nach. Zwischen dem Juni 1209 und dem März 1210 ist Simon im Heer des Albigense...

 

 

Perang Koalisi KetigaBagian dari Perang NapoleonNapoléon di Pertempuran Austerlitz, oleh François Pascal Simon, Baron GérardTanggal1803–1806LokasiEropa Tengah, Italia, dan TrafalgarHasil Kemenangan Prancis, Traktat Pressburg Pembubaran Kekaisaran Romawi SuciPihak terlibat  Kekaisaran Austria Kekaisaran Rusia Britania Raya Kerajaan Napoli Kerajaan Sisilia Kerajaan Portugal Swedia Kekaisaran PrancisRepublik Batavia Italia Etruria  Spain Bayern WürttembergTokoh dan...

Protected area in New South Wales, AustraliaGulaga National ParkNew South WalesIUCN category II (national park) Mount Gulaga and Central TilbaGulaga National ParkCoordinates36°18′24″S 150°01′09″E / 36.30667°S 150.01917°E / -36.30667; 150.01917Established2001Area46.73 km2 (18.0 sq mi)Managing authoritiesNSW National Parks and Wildlife ServiceWebsiteGulaga National ParkSee alsoProtected areas ofNew South Wales Horse Head Rock, on the coast near...

 

 

Santa Teresa dari Avila, lukisan karya Peter Paul Rubens Doa hening (mental prayer) secara teknis berarti doa yang diungkapkan dalam hati, bukan secara lisan; merupakan satu bentuk doa yang dianjurkan dalam Gereja Katolik, dan dalam Katekismus Gereja Katolik (KGK) dibagi lagi menjadi 2 kelompok utama: doa renungan (meditative prayer) dan doa batin (contemplative prayer).[1]:2699[2]:2700 KGK menjelaskan bahwa doa ini sesungguhnya merupakan suatu pencarian, dalam kepapaan dan da...

 

 

Sonic Rivals Обложка североамериканского издания игры Разработчики Backbone Entertainment Sega Studio USA Издатель Sega Часть серии Sonic the Hedgehog Дата анонса 3 мая 2006[1] Даты выпуска 1 декабря 2006[2] 16 ноября 2006[2] 2 февраля 2007[3] Жанры аркада, платформер Создатели Руководитель Такаси Иид...

Place in Manitoba, CanadaGypsumvilleGypsumvilleLocation of Gypsumville in ManitobaCoordinates: 51°46′8″N 98°38′5″W / 51.76889°N 98.63472°W / 51.76889; -98.63472Country CanadaProvince ManitobaRegionInterlakeCensus DivisionNo. 18Government • MPJames Bezan • MLADerek JohnsonTime zoneUTC−6 (CST) • Summer (DST)UTC−5 (CDT)Postal CodeR0C 1J0Area code204NTS Map062O15GNBC CodeGAKCE Gypsumville is a community in Manit...

 

 

South Korean footballer In this Korean name, the family name is Lee. Lee Seul-chan Rio 2016Personal informationDate of birth (1993-08-15) 15 August 1993 (age 30)Place of birth South KoreaHeight 1.72 m (5 ft 7+1⁄2 in)Position(s) Full backTeam informationCurrent team Goyang KH FCYouth career2006–2008 Jeonnam Dragons U-15Gwangyang Jecheol Middle School2009–2011 Jeonnam Dragons U-18Gwangyang Jecheol High SchoolSenior career*Years Team Apps (Gls)2012–2019 Jeonnam Dr...

 

 

Ballpark Latta Park Baseball FieldLatta Park Baseball Field between 1908 and 1911LocationLennox Ave & East Blvd Charlotte, NC 28203OwnerCharlotte Consolidated Construction CompanyCapacity1,000Field sizeLeft Field – ft Center Field – ftRight Field – ftSurfaceGrassConstructionOpenedMay 20, 1891Renovated1892, 1897Closed1912TenantsDavidson Wildcats (football) (1896-1903)Charlotte Hornets (VNCL) (1901, 1905), (CA) (1908)Brooklyn Dodgers (NL) (spring training) (1896-1897, 1901)Philadelphi...

This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article is an orphan, as no other articles link to it. Please introduce links to this page from related articles; try the Find link tool for suggestions. (August 2023) This article does not cite any sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find so...

 

 

Artikel ini bukan mengenai Perpustakaan (ilmu komputer). Perpustakaan modern Dalam arti tradisional, perpustakaan ataupun rumah buku, adalah sebuah koleksi buku dan majalah. Walaupun dapat diartikan sebagai koleksi pribadi perseorangan, namun perpustakaan lebih umum dikenal sebagai sebuah koleksi besar yang dibiayai dan dioperasikan oleh sebuah kota atau institusi, serta dimanfaatkan oleh masyarakat yang rata-rata tidak mampu membeli sekian banyak buku dengan biaya sendiri. Tetapi, dengan kol...

 

 

This article is an orphan, as no other articles link to it. Please introduce links to this page from related articles; try the Find link tool for suggestions. (April 2022) Catherine Jane Wood (18 June 1841 – 14 June 1930)[1] was an English nurse, collaborator to Charles West in the early years of the Great Ormond Street Hospital, London, and pioneer of pediatric nursing. Career In the summer of 1863, Catherine Jane Wood started to frequent the Great Ormond Street Hospital (GOSH) as ...

Mayotte Mahoré Ubicación geográficaArchipiélago Islas ComorasCoordenadas 12°50′00″S 45°10′00″E / -12.833333333333, 45.166666666667Ubicación administrativaPaís FranciaCaracterísticas generalesSuperficie 374 kmLongitud 39 kmAnchura máxima 22 kmPerímetro 185,2Punto más alto Benara 660 mPoblaciónCapital MamoudzouPoblación 186 452 hab.Densidad 498,53 hab./km²Mapa de localización Mayotte Mayotte Ubicación (Mayotte).[editar datos en Wikidata] M...

 

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (ديسمبر 2020) الوالي محمد بن علي الأرمني محمد بن علي الأرمني والي طرسوس في المنصب872 – 873 محمد بن هارون التغلبي أورخز بن ألوغ طرخان معلومات شخصية تاريخ الوفاة سنة 873  تعد...

 

 

Strategi Solo vs Squad di Free Fire: Cara Menang Mudah!