בדף הזה מתואר Cassandra Adapter ומוסבר איך להשתמש בו כדי להתחבר ל-Spanner.
המתאם של Cassandra מיועד להפעלה באותו מחשב שבו פועלת האפליקציה. המתאם חושף נקודת קצה ב-localhost שתומכת בפרוטוקול Cassandra Query Language (CQL). הוא מתרגם את פרוטוקול התקשורת של CQL ל-gRPC, פרוטוקול התקשורת של Spanner. כשהפרוקסי הזה פועל באופן מקומי, לקוח Cassandra יכול להתחבר למסד נתונים של Spanner.
אפשר להפעיל את Cassandra Adapter בדרכים הבאות:
- בתהליך עם אפליקציית Go
- בתוך האפליקציה שלכם ב-Java
- כתהליך עצמאי
- במאגר Docker
לפני שמתחילים
לפני שמפעילים את Cassandra Adapter, צריך לוודא שעברתם אימות באמצעות חשבון משתמש או חשבון שירות במחשב שבו Cassandra Adapter יפעל. אם אתם משתמשים בחשבון שירות, אתם צריכים לדעת את המיקום של קובץ מפתח ה-JSON (קובץ פרטי הכניסה).
מגדירים את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS כדי לציין את הנתיב של פרטי הכניסה.
לפני שמפעילים את Cassandra Adapter, צריך לוודא שעברתם אימות באמצעות חשבון משתמש או חשבון שירות במחשב שבו Cassandra Adapter יפעל. אם אתם משתמשים בחשבון שירות, אתם צריכים לדעת את המיקום של קובץ מפתח ה-JSON (קובץ פרטי הכניסה).
מגדירים את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS כדי לציין את הנתיב של פרטי הכניסה.
למידע נוסף:
חיבור Cassandra Adapter לאפליקציה
כדי להשתמש ב-Cassandra Adapter, צריך לספק את הפרטים הבאים:
- Project name
- שם המכונה ב-Spanner
- מסד הנתונים שאליו מתחברים
אם אתם משתמשים ב-Docker, אתם צריכים את הנתיב לקובץ פרטי כניסה בפורמט JSON (קובץ מפתח).
Java in-process
אם אתם משתמשים בחשבון שירות לאימות, חשוב לוודא שמשתנה הסביבה
GOOGLE_APPLICATION_CREDENTIALSמוגדר לנתיב של קובץ פרטי הכניסה.באפליקציות Java, אפשר לקשר את Cassandra Adapter לאפליקציה ישירות על ידי הוספת
google-cloud-spanner-cassandraכתלות לפרויקט.
ב-Maven, מוסיפים את התלות החדשה הבאה בקטע <dependencies>:
ב-Gradle, מוסיפים את הקוד הבא:
- משנים את קוד היצירה של
CqlSession. במקום להשתמש ב-CqlSessionBuilder, משתמשים ב-SpannerCqlSessionBuilderומזינים את ה-URI של מסד הנתונים ב-Spanner:
העברה למצב 'בתהליך'
באפליקציות Go, צריך לשנות שורה אחת בקובץ האתחול של האשכול כדי לשלב את לקוח Spanner Cassandra Go. לאחר מכן תוכלו לקשר את Cassandra Adapter לאפליקציה ישירות.
- מייבאים את חבילת
spannerשל המתאם מלקוח Spanner Cassandra Go באפליקציית Go.
import spanner "github.com/googleapis/go-spanner-cassandra/cassandra/gocql"
- משנים את קוד יצירת האשכול כך שישתמש ב-
spanner.NewClusterבמקום ב-gocql.NewCluster, ומזינים את ה-URI של מסד הנתונים ב-Spanner:
אחרי שמתחברים למסד הנתונים של Spanner, אפשר להגדיר את האשכול כרגיל.
עצמאי
- משכפלים את המאגר:
git clone https://github.com/googleapis/go-spanner-cassandra.git
cd go-spanner-cassandra
- מריצים את הפקודה
cassandra_launcher.goעם הדגל-dbהנדרש:
go run cassandra_launcher.go \
-db "projects/my_project/instances/my_instance/databases/my_database"
- מחליפים את
-dbב-URI של מסד הנתונים שלכם ב-Spanner.
Docker
מריצים את Cassandra Adapter באמצעות הפקודה הבאה.
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
docker run -d -p 9042:9042 \
-e GOOGLE_APPLICATION_CREDENTIALS \
-v ${GOOGLE_APPLICATION_CREDENTIALS}:${GOOGLE_APPLICATION_CREDENTIALS}:ro \
gcr.io/cloud-spanner-adapter/cassandra-adapter \
-db DATABASE_URI
הרשימה הבאה מכילה את אפשרויות ההפעלה הנפוצות ביותר של Spanner Cassandra Adapter:
-db <DatabaseUri>
ה-URI של מסד הנתונים של Spanner (חובה). כאן מציינים את מסד הנתונים של Spanner שאליו הלקוח מתחבר. לדוגמה, projects/YOUR_PROJECT/instances/YOUR_INSTANCE/databases/YOUR_DATABASE.
-tcp <TCPEndpoint>
כתובת מאזין ה-Proxy של הלקוח. ההגדרה הזו מגדירה את נקודת הקצה של TCP שבה הלקוח מאזין לחיבורים נכנסים של לקוח Cassandra.
ברירת מחדל:localhost:9042
-grpc-channels <NumGrpcChannels>
מספר ערוצי gRPC שבהם יש להשתמש כשמתחברים ל-Spanner. ברירת מחדל: 4
לדוגמה, הפקודה הבאה מפעילה את Cassandra Adapter ביציאה 9042 באמצעות פרטי הכניסה של האפליקציה, ומקשרת את המתאם למסד הנתונים projects/my_project/instances/my_instance/databases/my_database:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials.json
docker run -d -p 9042:9042 \
-e GOOGLE_APPLICATION_CREDENTIALS \
-v ${GOOGLE_APPLICATION_CREDENTIALS}:${GOOGLE_APPLICATION_CREDENTIALS}:ro \
gcr.io/cloud-spanner-adapter/cassandra-adapter \
-db projects/my_project/instances/my_instance/databases/my_database
המלצות
ההמלצות הבאות יעזרו לכם לשפר את חוויית השימוש ב-Cassandra Adapter. ההמלצות האלה מתמקדות ב-Java, ובמיוחד במנהל התקן של לקוח Cassandra ל-Java בגרסה 4.
הגדלת הזמן הקצוב לתפוגת הבקשה
זמן קצוב לתפוגה של בקשה של חמש שניות או יותר מספק חוויה טובה יותר עם Cassandra Adapter מאשר ערך ברירת המחדל של שתי שניות.
# Sample application.conf: increases request timeout to five seconds
datastax-java-driver {
basic {
request {
timeout = 5 seconds
}
}
}
שיפור הביצועים של מאגר החיבורים
ההגדרות שמוגדרות כברירת מחדל למספר החיבורים המקסימלי ולמספר הבקשות המקסימלי בו-זמנית לכל חיבור או לכל מארח מתאימות לפיתוח, לבדיקה ולסביבות ייצור או לבמה עם נפח נמוך. עם זאת, מומלץ להגדיל את הערכים האלה, כי Cassandra Adapter מתחזה לצומת יחיד, בניגוד למאגר צמתים בתוך Cassandra cluster.
הגדלת הערכים האלה מאפשרת יותר חיבורים בו-זמניים בין הלקוח לבין Cassandra Interface. כך אפשר למנוע מצב שבו מאגר החיבורים מתרוקן בעומס כבד.
# Sample application.conf: increases maximum number of requests that can be
# executed concurrently on a connection
advanced.connection {
max-requests-per-connection = 32000
pool {
local.size = 10
}
}
כוונון ערוצי gRPC
הלקוח של Spanner משתמש בערוצי gRPC לתקשורת. ערוץ gRPC אחד שווה בערך לחיבור TCP. ערוץ gRPC אחד יכול לטפל בעד 100 בקשות בו-זמניות. כלומר, לאפליקציה צריך להיות לפחות מספר הערוצים של gRPC ששווה למספר הבקשות המקבילות שהאפליקציה תבצע, חלקי 100.
השבתת ניתוב מודע לטוקן
יכול להיות שיוצג לנהגים שמשתמשים באיזון עומסים מבוסס-טוקנים אזהרה, או שהם לא יוכלו לעבוד עם Cassandra Adapter. מכיוון ש-Cassandra Adapter מתחזה לצומת יחיד, הוא לא תמיד פועל בצורה טובה עם מנהלי התקנים שמודעים לטוקנים ומצפים שיהיו לפחות מספר צמתים ששווה לגורם השכפול באשכול. חלק מהדרייברים עשויים להדפיס אזהרה (שאפשר להתעלם ממנה) ולחזור למדיניות איזון כמו round-robin, בעוד שדרייברים אחרים עשויים להיכשל עם שגיאה. לגבי הדרייברים שנכשלו עם שגיאה, צריך להשבית את המודעות לטוקנים או להגדיר את מדיניות איזון העומסים מסוג round-robin.
# Sample application.conf: disables token-aware routing
metadata {
token-map {
enabled = false
}
}
הצמדת גרסת הפרוטוקול ל-V4
מתאם Cassandra תואם לכל מנהל התקן של לקוח Apache Cassandra בקוד פתוח שתואם לפרוטוקול CQL Binary v4 wire. חשוב להקפיד להצמיד את PROTOCOL_VERSION אל V4, אחרת יכול להיות שיוצגו שגיאות חיבור.
# Sample application.conf: overrides protocol version to V4
datastax-java-driver {
advanced.protocol.version = V4
}
המאמרים הבאים
- מידע נוסף על Spanner Cassandra Adapter ל-Java זמין במאגר java-spanner-cassandra ב-GitHub.
- מידע נוסף על Spanner Cassandra Adapter for Go זמין במאגר go-spanner-cassandra ב-GitHub.
- השוואה בין המושגים והארכיטקטורה של Cassandra ו-Spanner
- איך עוברים מ-Cassandra ל-Spanner